J'ai une structure comme celle-SIGSEGV lorsque vous essayez de changer la chaîne dans la structure C/C++
typedef struct {
string aPath;
string dPath;
string tmpPath;
int cSet;
int socket;
} threadParams;
Et certaines variables comme celui-ci
string dirPath = "./Maildir/";
string authPath;
string tmpPath = "~/tmpPath/";
Im essayant d'initialiser la structure et ajouter des données comme celui-ci
threadParams *tP = (threadParams*)malloc(sizeof(threadParams));
tP->aPath = authPath;
tP->cSet = cParam;
tP->dPath = dirPath;
tP->socket = commSocket;
tP->tmpPath = tmpPath;
Quand je lance le programme avec ce code il y a SIGSEGV tout en essayant d'exécuter ceci: TP-> aLigne = authPat h; quand je supprime ces membres de la structure et que je conserve juste la variable int, tout fonctionne correctement.
Quelqu'un peut-il me dire pourquoi cela se produit et comment y remédier? Merci
C++ n'est pas C. Utilisez 'new' et' delete' pas 'malloc' et' free'. –
'C'est C++ pas C. '@Captain Obvlious vous ne le connaissez pas. Il peut être 'typedef char * string;' ou '#define string char *' –
@ PeterJ_01 En fait, même avec le petit fragment de code, il est clair qu'il y a une forte probabilité que l'OP essaie de passer de C à C++, apprenant à la fois en même temps, ou en mélangeant les deux ensemble. C'est une erreur commune et pas vraiment difficile à identifier comme la chose la plus probable qui se passe ici. –