Rumah >pembangunan bahagian belakang >C++ >Adakah Selamat untuk Memanggil `padam` pada Pembolehubah Diperuntukkan Tindanan dalam C ?
Bolehkah Anda Panggil Padam Dengan Selamat pada Pembolehubah Yang Diperuntukkan Tindanan?
Dalam bidang pengaturcaraan C, adalah penting untuk memahami nuansa memori dikaitkan dengan memperuntukkan pembolehubah pada timbunan atau timbunan. Walaupun gaya pengaturcaraan dan reka bentuk harus diambil kira, adalah penting untuk menangani soalan asas: adakah dibenarkan untuk memanggil padam pada pembolehubah yang diperuntukkan pada tindanan?
Memeriksa Isu
Pertimbangkan kod berikut coretan:
int nAmount; delete &nAmount;
class sample { public: sample(); ~sample() { delete &nAmount; } int nAmount; };
Isu Keselamatan
Jawapan kepada soalan itu ialah tidak. Memanggil padam pada pembolehubah yang diperuntukkan tindanan adalah tidak selamat dan harus dielakkan.
Prinsip Peruntukan Memori
Untuk memahami sebabnya, adalah penting untuk memahami prinsip peruntukan memori . Untuk setiap:
Campuran Haram
Pencampuran kaedah peruntukan ini adalah dilarang sama sekali. Percubaan untuk mengosongkan atau memadam[] objek yang diperuntukkan dengan yang baharu akan mengakibatkan tingkah laku yang tidak ditentukan. Perkara yang sama berlaku untuk memanggil padam pada pembolehubah yang diperuntukkan tindanan.
Akibat Pemadaman
Apabila memanggil padam pada pembolehubah yang diperuntukkan tindanan, pengkompil boleh melakukan pengoptimuman , seperti elision, dengan mengandaikan objek tidak digunakan selepas ia keluar dari skop. Walau bagaimanapun, panggilan padam secara eksplisit pada pembolehubah sedemikian boleh membawa kepada:
Kesimpulan
Untuk mengekalkan integriti ingatan dan mengelakkan tingkah laku yang tidak ditentukan, adalah penting untuk menghormati prinsip peruntukan memori. Elakkan memanggil padam pada pembolehubah yang diperuntukkan tindanan dan mematuhi pasangan peruntukan dan deallocation yang sesuai: malloc/free, new/delete dan new[]/delete[].
Atas ialah kandungan terperinci Adakah Selamat untuk Memanggil `padam` pada Pembolehubah Diperuntukkan Tindanan dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!