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 usarlo.
Non posso parlare per altri sistemi (anche se per me è ragionevole presumere che adottino una pratica simile), ma almeno su Windows, il Kernel è fondamentalmente garantito per ripulire la maggior parte delle risorse (con l'eccezione di pochi ) utilizzato da un programma dopo la chiusura del programma. Che include memoria heap, tra le altre cose.
Capisco perché vorresti chiudere un file dopo aver finito di usarlo per renderlo disponibile all'utente o perché vorresti scollegare un socket collegato a un server per risparmiare larghezza di banda, ma sembra sciocco dover microgestire TUTTA la tua memoria usata dal tuo programma.
Ora, sono d'accordo sul fatto che questa domanda è ampia poiché il modo in cui dovresti gestire la tua memoria è basato sulla quantità di memoria di cui hai bisogno e quando ne hai bisogno, quindi restringerò l'ambito di questa domanda a questo: If I è necessario utilizzare un pezzo di memoria per tutta la durata del mio programma, è davvero necessario liberarlo prima della chiusura del programma?
Modifica: La domanda suggerita come duplicato era specifica della famiglia di sistemi operativi Unix. La sua risposta più alta ha anche specificato uno strumento specifico per Linux (ad esempio Valgrind). Questa domanda è pensata per coprire la maggior parte dei "normali" sistemi operativi non incorporati e perché è o non è una buona pratica liberare memoria necessaria per tutta la durata di un programma.