Dalam banyak buku dan tutorial, saya pernah mendengar praktik manajemen memori menekankan dan merasa bahwa beberapa hal misterius dan mengerikan akan terjadi jika saya tidak membebaskan memori setelah saya selesai menggunakannya.
Saya tidak dapat berbicara untuk sistem lain (walaupun bagi saya masuk akal untuk berasumsi bahwa mereka mengadopsi praktik yang sama), tetapi setidaknya pada Windows, Kernel pada dasarnya dijamin untuk membersihkan sebagian besar sumber daya (dengan pengecualian beberapa ganjil) yang digunakan oleh sebuah program setelah penghentian program. Yang termasuk memori tumpukan, antara berbagai hal lainnya.
Saya mengerti mengapa Anda ingin menutup file setelah selesai menggunakannya untuk membuatnya tersedia bagi pengguna atau mengapa Anda ingin memutuskan soket yang terhubung ke server untuk menghemat bandwidth, tetapi tampaknya konyol untuk harus mengatur SEMUA memori Anda yang digunakan oleh program Anda.
Sekarang, saya setuju bahwa pertanyaan ini luas karena bagaimana Anda harus menangani memori Anda didasarkan pada berapa banyak memori yang Anda butuhkan dan ketika Anda membutuhkannya, jadi saya akan mempersempit ruang lingkup pertanyaan ini menjadi ini: Jika saya perlu menggunakan sepotong memori sepanjang umur program saya, apakah benar-benar perlu untuk membebaskannya tepat sebelum penghentian program?
Sunting: Pertanyaan yang disarankan sebagai duplikat khusus untuk keluarga sistem operasi Unix. Jawaban teratasnya bahkan menentukan alat khusus untuk Linux (misalnya Valgrind). Pertanyaan ini dimaksudkan untuk mencakup sebagian besar sistem operasi non-embedded "normal" dan mengapa itu adalah praktik yang baik atau tidak untuk membebaskan memori yang diperlukan sepanjang umur suatu program.