bonjour tout le monde
je cherche une fonction prédifinie qui désalloue la place mémoire réservéé par un arbre.
bonjour tout le monde
je cherche une fonction prédifinie qui désalloue la place mémoire réservéé par un arbre.
Tout dépend comment tu as programmé ton arbre. Donnes-nous plus de précisions...
*****************
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 struct tab { double val; int occ; String code; }; tab *Table;
et je veux désallouer P.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 typedef struct ab { tab element; struct ab *droit; struct ab *gauche; }noeud; typedef noeud * arbre; arbre P;
merci d'avance.
Pour l'instant ton pointeur P est un pointeur qui pointe n'importe où !
Et tu n'as aucun espace alloué pour un noeud !
mais j'ai alloué de la place pour P
Code : Sélectionner tout - Visualiser dans une fenêtre à part P = (arbre )malloc(sizeof(arbre));
Ce qui a été alloué avec malloc doit être désalloué avec free.
Mais ça c'est du C, pas du C++.
voila le code:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 void supprimer(arbre T) { if (! est_vide(T) ) { supprimer (T->gauche); supprimer (T->droit); } free(T); }
ensuite l'appel:
mais ça marche pas
Code : Sélectionner tout - Visualiser dans une fenêtre à part supprimer(P);
Je pense qu'il y a une erreur ici.Envoyé par sino
Tu devrai faire:
car sinon, tu n'alloue de l'espace que pour un pointeur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part P = (arbre)malloc(sizeof(noeud));
Sinon, comme cela a été dis plus haut, tout dans ton code est en fait du C.
(non seulement le code mais aussi la manière de travailler)
Donc la prochaine fois, essaie de poster dans le bon forum ;-).
Utilise new et delete.
En C++ c'est très simple tu met un destructeur dans la classe ab qui fait :
Tu est obligé de faire du C ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 delete droit; delete gauche;
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager