Rumah >pembangunan bahagian belakang >C++ >Apa yang Berlaku Apabila Anda Padamkan Penuding Berganda dalam C ?
Pemadaman Berganda dan Akibatnya
Pemadaman berganda ialah ralat yang berlaku apabila penunjuk dipadamkan dua kali. Ini boleh mengakibatkan gelagat tidak ditentukan, bermakna apa-apa boleh berlaku, termasuk ranap masa jalan.
Dalam coretan kod yang disediakan:
Obj *op = new Obj; Obj *op2 = op; delete op; delete op2;
Op objek dibuat menggunakan operator baharu. Kemudian, op2 penunjuk kedua dicipta menunjuk ke objek yang sama. Apabila op dipadamkan, memori objek dibebaskan. Walau bagaimanapun, apabila op2 dipadamkan, memori yang sama dibebaskan semula, membawa kepada pemadaman dua kali.
Akibat pemadaman dua kali boleh menjadi teruk. Memandangkan memori telah pun dibebaskan, mengakses objek yang ditunjuk oleh op2 selepas pemadaman pertama akan mengakibatkan tingkah laku yang tidak dijangka. Ini boleh membawa kepada gelagat tidak ditentukan, ralat segmentasi atau ralat masa jalan lain.
Pengkompil tidak akan membuang ralat dalam keadaan ini kerana ralat hanya berlaku pada masa jalan apabila atur cara cuba mengakses memori yang telah dipadamkan. Untuk mengelakkan pemadaman berganda, adalah penting untuk memastikan bahawa penunjuk hanya dipadamkan sekali.
Atas ialah kandungan terperinci Apa yang Berlaku Apabila Anda Padamkan Penuding Berganda dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!