Saya percaya jawabannya tidak, jangan pernah membiarkan memori bocor, dan saya punya beberapa alasan yang belum saya lihat secara eksplisit. Ada jawaban teknis yang bagus di sini, tetapi saya pikir jawaban yang sebenarnya bergantung pada alasan sosial / manusiawi.
(Pertama, perhatikan bahwa seperti yang disebutkan lainnya, kebocoran sebenarnya adalah ketika program Anda, pada titik mana saja, kehilangan jejak sumber daya memori yang telah dialokasikan. Di C, ini terjadi ketika Anda malloc()
ke pointer dan membiarkan pointer meninggalkan ruang lingkup tanpa melakukan free()
pertama.)
Inti penting dari keputusan Anda di sini adalah kebiasaan. Ketika Anda kode dalam bahasa yang menggunakan pointer, Anda akan menggunakan pointer banyak . Dan pointer itu berbahaya; mereka adalah cara termudah untuk menambahkan segala macam masalah parah ke kode Anda.
Saat Anda menulis kode, terkadang Anda akan tertarik dan terkadang Anda lelah, marah, atau khawatir. Selama waktu yang agak terganggu, Anda mengkode lebih banyak pada autopilot. Efek autopilot tidak membedakan antara kode satu kali dan modul dalam proyek yang lebih besar. Selama masa itu, kebiasaan yang Anda bangun adalah apa yang akan berakhir dengan basis kode Anda.
Jadi tidak, jangan biarkan kebocoran memori untuk alasan yang sama bahwa Anda masih harus memeriksa titik-titik buta Anda ketika mengganti jalur bahkan jika Anda satu-satunya mobil di jalan saat ini. Selama masa ketika otak aktif Anda terganggu, kebiasaan baik adalah semua yang dapat menyelamatkan Anda dari salah langkah bencana.
Di luar masalah "kebiasaan", petunjuk itu rumit dan seringkali membutuhkan banyak kekuatan otak untuk melacak secara mental. Sebaiknya jangan "memperkeruh air" dalam hal penggunaan pointer Anda, terutama ketika Anda baru dalam pemrograman.
Ada aspek yang lebih sosial juga. Dengan penggunaan yang tepat dari malloc()
dan free()
, siapa pun yang melihat kode Anda akan merasa nyaman; Anda mengelola sumber daya Anda. Namun, jika tidak, mereka akan segera mencurigai adanya masalah.
Mungkin Anda telah mengetahui bahwa kebocoran memori tidak menyakiti apa pun dalam konteks ini, tetapi setiap pengelola kode Anda harus mengerjakannya juga di kepalanya ketika dia membaca sepotong kode itu. Dengan menggunakan free()
Anda menghapus kebutuhan untuk mempertimbangkan masalah.
Akhirnya, pemrograman adalah menulis model mental dari suatu proses ke bahasa yang tidak ambigu sehingga seseorang dan komputer dapat dengan sempurna memahami proses tersebut. Bagian penting dari praktik pemrograman yang baik tidak pernah memperkenalkan ambiguitas yang tidak perlu.
Pemrograman cerdas fleksibel dan generik. Pemrograman yang buruk bersifat mendua.