Visualizzazione dei risultati da 1 a 3 su 3

Discussione: C++ distruttori

  1. #1

    C++ distruttori

    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!

  2. #2
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    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.
    This code and information is provided "as is" without warranty of any kind, either expressed
    or implied, including but not limited to the implied warranties of merchantability and/or
    fitness for a particular purpose.

  3. #3
    Me ne accorgo perchè utilizzo valgrind, che permette di vedere se tutti gli oggetti vengono deallocati dalla memoria dinamica

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.