Premetto che ho creato un progetto c++ fondato su una classe Lista (coi i puntatori) che si basa a sua volta sulla classe ricorsiva Nodo (di cui è friend ovviamente per avere accesso ai membri private)... ho usato i template in modo da avere una lista astratta adattabile a ogni tipo di dato. L'interfaccia della classe Nodo, l'interfaccia della classe Lista e le loro implementazioni (assieme a qualche funzione di utilità che ho dichiarato friend delle due suddette classi) sono sparse su 3 file, mentre nel file main ho messo dei casi di prova con chiamate alle funzioni (inserimento in testa, inserimento in coda, estrazione in testa, estrazione in coda, stampa, inserimento in modo ordinato, verifica se una lista è palindroma...). Ovviamente la classe Lista è dotata di un distruttore (oltre che di un costruttore). Le righe di codice nel main sono molte, ma per effettuare meglio le prove su ogni funzione provvedo di volta in volta a commentare le righe che al momento non interessano... il problema è che quando assemblo il progetto e lancio l'esegubile, al termine dell'esecuzione in alcuni casi mi compare il messaggio incluso nel distruttore che informa della distruzione dei nodi effettuata, in altri casi invece quel messaggio non mi compare...
Dunque a volte non viene invocato il distruttore? Se così fosse ci sarebbe uno spreco di memoria... Vorrei capire come stanno le cose e soprattutto perché a volte il distruttore non viene invocato, credevo fosse automatica la sua invocazione prima del termine del programma. Grazie a chi saprà darmi una spiegazione.