In molti libri e tutorial, ho sentito la pratica della gestione della memoria stressata e ho sentito che alcune cose misteriose e terribili sarebbero accadute se non avessi liberato memoria dopo aver finito di usarla.
Non posso parlare per altri sistemi (anche se per me è ragionevole supporre che adottino una pratica simile), ma almeno su Windows, il kernel è sostanzialmente garantito per ripulire la maggior parte delle risorse (ad eccezione di alcuni strani) utilizzate da un programma dopo la fine del programma. Che include la memoria heap, tra le altre cose.
Capisco perché vorresti chiudere un file dopo averlo usato per renderlo disponibile all'utente o perché dovresti disconnettere un socket collegato a un server per risparmiare larghezza di banda, ma sembra sciocco devi microgestire TUTTA la tua memoria utilizzata dal tuo programma.
Ora, sono d'accordo sul fatto che questa domanda è ampia poiché il modo in cui dovresti gestire la tua memoria si basa sulla quantità di memoria di cui hai bisogno e quando ne hai bisogno, quindi restringerò l'ambito di questa domanda a questo: se devo usare un pezzo di memoria per tutta la durata del mio programma, è davvero necessario liberarla prima della conclusione del programma?
Modifica: la domanda suggerita come duplicato era specifica della famiglia di sistemi operativi Unix. La sua risposta principale ha persino specificato uno strumento specifico per Linux (ad esempio Valgrind). Questa domanda ha lo scopo di coprire la maggior parte dei sistemi operativi "normali" non incorporati e perché è o non è una buona pratica liberare memoria necessaria per tutta la durata di un programma.