Probleme de segmentation sur arbre binaire.
Résolu/Fermé
wlued
Messages postés
5
Date d'inscription
lundi 10 octobre 2005
Statut
Membre
Dernière intervention
11 octobre 2005
-
10 oct. 2005 à 20:48
wlued Messages postés 5 Date d'inscription lundi 10 octobre 2005 Statut Membre Dernière intervention 11 octobre 2005 - 11 oct. 2005 à 10:53
wlued Messages postés 5 Date d'inscription lundi 10 octobre 2005 Statut Membre Dernière intervention 11 octobre 2005 - 11 oct. 2005 à 10:53
A voir également:
- Probleme de segmentation sur arbre binaire.
- Codage binaire - Guide
- Impossible d'exécuter le fichier binaire : erreur de format pour exec() - Forum Ubuntu
- Erreur de segmentation (core dumped) ✓ - Forum C
- Glandier arbre ✓ - Forum Loisirs / Divertissements
- Réponse binaire - Forum Bases de données
6 réponses
kilian
Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1 527
10 oct. 2005 à 21:11
10 oct. 2005 à 21:11
Quand tu appeles une fois la fonction insérer, 8 est plus grand que 0 (chez moi la valeur par défaut d'un x dans un noeud fraichement alloué).
Donc premier appel de insérer() avec x=8, il va rappeler insérer sur feuille->droite pour y insérer 8.
Donc deuxième appel de inserer(), ici n==NULL (puisque tu n'a pas alloué de place pour feuille->droite précédemment).
Donc le "feuille->x=x;" provoque une erreur de segmentation, puisque la place n'a pas été allouée pour ce pointeur de noeud.
Donc juste une petite correction:
Donc premier appel de insérer() avec x=8, il va rappeler insérer sur feuille->droite pour y insérer 8.
Donc deuxième appel de inserer(), ici n==NULL (puisque tu n'a pas alloué de place pour feuille->droite précédemment).
Donc le "feuille->x=x;" provoque une erreur de segmentation, puisque la place n'a pas été allouée pour ce pointeur de noeud.
Donc juste une petite correction:
if (n==NULL) { feuille=malloc(sizeof(noeud)); // A rajouter feuille->x=x; feuille->gauche=NULL; feuille->droite=NULL; }
wlued
Messages postés
5
Date d'inscription
lundi 10 octobre 2005
Statut
Membre
Dernière intervention
11 octobre 2005
10 oct. 2005 à 21:44
10 oct. 2005 à 21:44
J'ai fait la modif et lors de la compilation j'ai implicit declaration of function.
Le pb est p-e basique mais je ne maitrise pas encore trés bien.
Le pb est p-e basique mais je ne maitrise pas encore trés bien.
kilian
Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1 527
10 oct. 2005 à 21:49
10 oct. 2005 à 21:49
Ah...
Tu pourrais me donner l'erreur complète?
Ou au pire, me citer le contenu de la ligne à laquelle se rapporte l'erreur? (si c'est un bout de code que tu n'as pas encore cité, mets tout ton code ici).
Tu as bien inclu <stdlib.h> pour le malloc?
Tu pourrais me donner l'erreur complète?
Ou au pire, me citer le contenu de la ligne à laquelle se rapporte l'erreur? (si c'est un bout de code que tu n'as pas encore cité, mets tout ton code ici).
Tu as bien inclu <stdlib.h> pour le malloc?
wlued
Messages postés
5
Date d'inscription
lundi 10 octobre 2005
Statut
Membre
Dernière intervention
11 octobre 2005
11 oct. 2005 à 00:14
11 oct. 2005 à 00:14
Le message exact est 'warning : implicit declaration of function 'maloc'.
Il porte sur la section suivante :
if (n==NULL)
{
feuille=maloc(sizeof(noeud));
feuille->x=x;
feuille->gauche=NULL;
feuille->droite=NULL;
}
En fait je n'ai fait que rajouter cette ligne au programme cité plus haut.
J'ai bien inclu le <stdlib.h>.
Il porte sur la section suivante :
if (n==NULL)
{
feuille=maloc(sizeof(noeud));
feuille->x=x;
feuille->gauche=NULL;
feuille->droite=NULL;
}
En fait je n'ai fait que rajouter cette ligne au programme cité plus haut.
J'ai bien inclu le <stdlib.h>.
kilian
Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1 527
11 oct. 2005 à 06:54
11 oct. 2005 à 06:54
Ah ben oui, maloc...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
wlued
Messages postés
5
Date d'inscription
lundi 10 octobre 2005
Statut
Membre
Dernière intervention
11 octobre 2005
11 oct. 2005 à 08:40
11 oct. 2005 à 08:40
Erf oui effectivement....
Bon l'erreur est réparée et je peux à nouveau compiler mais je récupère également mon segmentation fault.
Bon l'erreur est réparée et je peux à nouveau compiler mais je récupère également mon segmentation fault.
wlued
Messages postés
5
Date d'inscription
lundi 10 octobre 2005
Statut
Membre
Dernière intervention
11 octobre 2005
11 oct. 2005 à 10:53
11 oct. 2005 à 10:53
Ok le pb est réglé, j'avais 'déplacé ' l'erreur en supprimant le malloc dans mon main. Le pointeur sur structure est alloué dans la fonction mais plus dans le main. Merci à vous.