Memadamkan Penunjuk NULL: Soal Keselamatan dan Gaya Pengekodan
Apabila mengendalikan penunjuk, adalah penting untuk memastikan kesahihannya. Satu soalan biasa timbul: adakah selamat untuk memadamkan penunjuk NULL?
Keselamatan Memadamkan Penunjuk NULL
Ya, adalah selamat untuk memadamkan penunjuk NULL. Apabila pengendali padam digunakan pada penunjuk NULL, ia pada dasarnya tidak melakukan apa-apa. Ini kerana operasi padam secara semula jadi memeriksa sama ada penuding adalah NULL sebelum cuba mengagihkan memori. Oleh itu, menyemak secara eksplisit penunjuk NULL sebelum memadamnya adalah tidak perlu dan boleh memperkenalkan overhed.
Pertimbangan Gaya Pengekodan
Walaupun selamat untuk memadamkan penunjuk NULL, ia secara amnya dianggap baik amalan pengekodan untuk menetapkan penunjuk kepada NULL selepas pemadaman. Ini membantu mengelakkan pemadaman dua kali, yang merupakan sumber biasa ralat kerosakan memori.
Sebagai contoh, pertimbangkan kod berikut:
int* ptr = new int; delete ptr; delete ptr; // Double deletion error
Dengan menetapkan ptr kepada NULL selepas pemadaman, anda boleh dengan berkesan cegah isu ini:
int* ptr = new int; delete ptr; ptr = NULL;
Pelaksanaan Tersuai Menggunakan Makro
Sesetengah pembangun menyokong pelaksanaan tersuai yang secara automatik menetapkan penunjuk yang dipadamkan kepada NULL. Sebagai contoh, makro seperti berikut boleh ditakrifkan:
#define my_delete(x) {delete x; x = NULL;}
Makro ini akan merangkumi kedua-dua operasi pemadaman dan penetapan nol berikutnya. Walau bagaimanapun, perlu diingat bahawa pertimbangan nilai R dan L digunakan apabila menggunakan pendekatan ini.
Atas ialah kandungan terperinci Adakah Memadam Penunjuk NULL Selamat, dan Apakah Amalan Pengekodan Terbaik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!