Bonjour,

Voila plusieurs fois que j'écris des fonctions qui mènent au plantage peu de temps APRES leur execution (pas directement pendant l'exécution des lignes suspectées). Pour l'exemple suivant, j'obtiens le message :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
*** glibc detected *** escargot: corrupted double-linked list: 0x00024010 ***
Ci après, un extrait de mon programme.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
int main(int argc, char **argv){
    ...
    TypeJeu Jeu;
    initJeuWithArg(&Jeu, argc, argv);
    ...
#ifndef PLANTAGE // cas qui est fonctionnel
    sprintf(msg, DEFAULT_DISPLAY_MSG);
    char tmp2=strlen(msg);
    Jeu.pMessageAttente=malloc(sizeof(char)*(tmp2+1));
    strcpy(Jeu.pMessageAttente, msg);
#endif
    ...
}
 
 
void initJeuWithArg(TypeJeu* pJeu, int argc, char **argv){
    initJeu(pJeu);
    ...
}
 
 
 
void initJeu(TypeJeu* pJeu){
    ...
#ifdef PLANTAGE // cas qui mène au plantage
    sprintf(msg, DEFAULT_DISPLAY_MSG);
    char tmp=strlen(msg);
    pJeu->pMessageAttente=malloc(sizeof(char)*(tmp+1));
    strcpy(pJeu->pMessageAttente, msg);
#else
    pJeu->pMessageAttente=NULL;
#endif
    ...
}
 
 
typedef struct
{
    ...
    char* pMessageAttente;
    ...
}
TypeJeu;
Je suppute une mauvaise utilisation des pointeurs et des malloc, mais j'ai beau chercher je ne vois pas où. Je tombe régulièrement sur le problème lors de l'écriture de nouvelles fonctions, donc il est peut-être temps que j'ouvre les yeux...

Pouvez-vous m'aider ?

Salutations,
Vincent