PDA

Visualizza la versione completa : C++ distruttori


bugino88
16-11-2010, 11:25
Ciao a tutti.
Sto facendo un programma in c++ che mi permette di costruire un albero binario di ricerca e di effettuare le operazioni base pi importati(add, remove, search ecc...).

Ho costruito 2 classi (node e albero).

Il problema sorge con i distruttori di queste due classi.
Nonostanze li abbia implementati, non funzionano in quanto rimane della memoria allocata nello heap.

Il distruttore di nodo :
~nodo(){
delete right;
delete left;
delete parent;
}

Il distruttore di albero :
~albero(){
delete root->left;
delete root->right;
delete root->parent;
}

Come posso correggere i miei errori in modo da avere tutta la memoria dinamica libera?

Grazie in anticipo per l'aiuto!

shodan
16-11-2010, 12:51
E da cosa ti accorgi che non invocato?
Hai provato a mettere un cout nel distruttore per verificarlo?
Ricorda che il sistema operativo libero di posticipare il rilascio della memoria. Quello che fai tu dire al sistema operativo che le aree di memoria prese in prestito non ti servono pi, ma lui pu farne quel che vuole.

bugino88
16-11-2010, 13:07
Me ne accorgo perch utilizzo valgrind, che permette di vedere se tutti gli oggetti vengono deallocati dalla memoria dinamica

Loading