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)

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;
}
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.
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'