Menetapkan Penunjuk kepada NULL dalam Pemusnah: Adakah Ia Perlu?
Dalam konteks pengaturcaraan berorientasikan objek, mengurus memori secara berkesan adalah penting. Apabila berurusan dengan kelas yang memperuntukkan memori secara dinamik, persoalan timbul mengenai sama ada berbaloi untuk menetapkan penunjuk kepada NULL dalam pemusnahnya.
Pertimbangkan kelas berikut:
<code class="cpp">class Foo { public: Foo() : bar(new Bar) {} ~Foo() { delete bar; } void doSomething() { bar->doSomething(); } private: Bar* bar; };</code>
Sekiranya penunjuk ditetapkan kepada NULL dalam pemusnah?
Sesetengah mungkin menganggap bahawa menetapkan penunjuk kepada NULL dalam pemusnah adalah berlebihan. Walau bagaimanapun, terdapat kes di mana ia boleh memberi manfaat, khususnya dalam binaan nyahpepijat. Amalan ini boleh membantu dalam penyahpepijatan dengan mendedahkan ralat yang berkaitan dengan penunjuk berjuntai.
Walau bagaimanapun, secara amnya tidak disyorkan untuk menetapkan penunjuk kepada NULL dalam pemusnah atas sebab berikut:
Ia memperkenalkan kod tambahan dan usaha penyelenggaraan dan mungkin mengaburkan niat pemusnah.Gunakan nilai penunjuk buruk yang diketahui: Berikan penuding kepada nilai tidak sah tertentu, seperti 0xDEADBEEF, untuk mencetuskan ranap yang boleh didiagnosis dalam kes penggunaan daripada rujukan yang berjuntai.
Gunakan mekanisme peruntukan memori selamat khusus bahasa:Atas ialah kandungan terperinci Kepada NULL atau Tidak kepada NULL: Adakah Menetapkan Penunjuk kepada NULL dalam Pemusnah Benar-benar Perlu?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!