Erreur C : *** glibc detected *** malloc

Anthony -  
 Bernard -
Bonjour,
j'ai une erreur a l'execution de mon programm en C. Le message d'erreur est : " *** glibc detected *** malloc : invalide pointer "
L'erreur intervient lors d'un malloc d'une structure que j'ai crée

Voici ma structure:

typedef struct listeChaine
{
int pos;
float score;
char *ali;
struct listeChaine * suivant;
} LISTE;

typedef LISTE *alignments;

est les fonctions :

alignments add_alignment(alignments l, float score, int pos, char *ali, int n){

alignments l2,tmp;

printf(" je suis la \n");

// L'erreur intervient ci-après
l2=(alignments)malloc(sizeof(struct listeChaine)); // create a new alignment
l2->pos=pos;
l2->score=score;
l2->ali=NULL;
l2->suivant = NULL;

tmp = l; // to save the beginning of the linked list

if(l == NULL){ // if it's the first alignment
l = l2;
}else{ // insertion in the end of the list
while(tmp->suivant != NULL)
tmp = tmp->suivant;
tmp->suivant = l2;
}

}

return l;
}

Merci de votre aide

6 réponses

kilian Messages postés 8854 Statut Modérateur 1 526
 
Salut,

Tu as inclus stdlib.h pour ton malloc?
0
Anthony
 
Oui j'ai bien mis l'include
0
kilian Messages postés 8854 Statut Modérateur 1 526
 
Chez moi j'ai pas cette erreur (à part l'accolade après le while).

Faut voir comment tu l'utilises cette fonction.
Si tu entres en paramatre pour l une structure LISTE, et que le champs "suivant" n'est pas nul, tu as une erreur de segmentation.

C'est tout ce que j'ai pu voir (j'ai pas beaucoup testé), sinon le malloc se passe bien chez moi.
0
Anthony
 
Ce qui est bizarre, c'est que j'utilise cette fonction avec une autre liste et ca marche très bien.
En paramètre, je passe une structure dans laquelle j'ai affecté NULL.
Donc au premier passage, il copie le pointeur sur la nouvelle structure crée.
Mais bon c'est pas grave, je vais continuer a chercher...

Merci quand même
0
kilian Messages postés 8854 Statut Modérateur 1 526
 
J'ai essayé en mettant en NULL en paramètre au lieu de passer le pointeur d'une structure LISTE. Idem, pas de soucis.

Désolé, je vois pas. A moins que tu mettes ici le code source complet....
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Anthony
 
Ca va pas etre possible de mettre le code ici car j'ai une dizaine de fichier pour faire marcher le prog.
Merci quand même
0
Bernard
 
Le problème est peut être ailleur que dans le code:

j'ai eu ce problème et en cherchant sur internent j'ai trouvé ce forum:
http://www.linuxquestions.org/questions/showthread.php?threadid=349135
pour cette personne le problème semble venir de la libc,enfin je crois !(je suis pas une masse en anglais) Pour ma part le problème a été résolu en passant l'option -ansi à gcc (je me demmande encore pourquoi ?)
0