Bonjour à tous,
J'ai mis en oeuvre un arbre binaire en m'appuyant sur le tuto du site: http://chgi.developpez.com/arbre/binaire/
Tout à l'air de fonctionner correctement à la compil, à l'éxectution.
Cependant, j'ai un soucis lorsque je passe PURIFY: un FMR est détecté au passage de la fonction clearArbre (FMR: Free Memory Read)
Visiblement, le soucis se passe à la ligne indiqué ci-dessus. Je pense que le problème vient du fait que le tmpTree est libérer puis qu'on appelle tmpTree->right par la suite.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 void clearTree(node **tree) { node *tmpTree = *tree; if(!tree) return; if(tmpTree->left) clearTree(&tmpTree->left); free(tmpTree); if(tmpTree->right) clearTree(&tmpTree->right); <---PROBLEME *tree = NULL; }
A première vue, je peux comprendre qu'il râle. Mais en fait non, en y réfléchissant je ne vois pas pourquoi puis après le free, le pointeur tmpTree->right existe.
C'est d'ailleurs conforté par le fait que l'éxecution à l'air de bien se passer.
Pourriez-vous m'éclairer?
De plus, tant que j'y suis, pourriez-vous m'expliquer l'intéret d'introduire tmpTree au lieu d'utiliser directement tree?
Je vous remercie par avance et vous souhaite une bone aprem'![]()
Partager