Je travaille actuellement sur un vérificateur d'orthographe (par CS5s pset5, pour ceux qui le connaissent). J'utilise un TRIE pour chercher, mais j'ai maintenant des problèmes pour le décharger. La fonction échoue la première fois qu'elle essaie de libérer(). Ma conjecture est qu'elle essaye de libérer le pointeur et non ce que pointe le pointeur, mais je pourrais me tromper complètement.Comment libérer un TRIE?
Ma question spécifique est: Pourquoi la fonction free()
échoue ici? (Erreur: double libération ou la corruption (out): 0x00000000006020c0 ***)
Mon definiton d'un nœud:
typedef struct node
{
bool wordHere;
struct node* children[27];
}node;
Ma fonction UNLOAD:
node* currentNodePtr = &root;
bool unload(void)
{
node* ptrArray[27] = {NULL};
for(int i = 0; i < 27; i++)
{
ptrArray[i] = currentNodePtr -> children[i];
}
free(currentNodePtr);
for(int c = 0; c < 27; c++)
{
if(ptrArray[c] != NULL)
{
currentNodePtr = ptrArray[c];
}
unload();
}
return 0;
}
Ce sera beaucoup mieux faire 'currentNodePtr' un paramètre de' unload 'à la place d'une variable globale. – interjay
Malheureusement, je ne suis pas autorisé à faire cette tâche, mais cela fonctionnerait beaucoup mieux, d'accord! Merci! –