Penunjuk kepada Memori yang Dilepaskan dalam C
Selepas memadamkan penunjuk, kekeliruan timbul mengenai kesahihan penunjuk lain yang merujuk objek yang sama. Artikel ini bertujuan untuk menjelaskan tingkah laku ini dalam C .
Pertimbangkan kod berikut:
<code class="cpp">A* a = new A(); A* b = a; delete a; A* c = a; // Illegal (C++11) A* d = b; // Debatable legality // Points to deallocated memory, Undefined in C++11 A* aAddr = &a;</code>
C 11 Gelagat:
C 14 Gelagat:
Menurut piawaian C 11, menggunakan nilai penunjuk tidak sah (termasuk menyalinnya) menyebabkan gelagat tidak ditentukan. Dalam C 14, operasi sedemikian mempunyai gelagat yang ditentukan pelaksanaan, bermakna gelagat mungkin berbeza-beza merentas penyusun dan sistem pengendalian yang berbeza.
Oleh itu, dalam kedua-dua C 11 dan C 14, adalah penting untuk mengelak daripada menggunakan penunjuk yang telah dipadamkan atau rujuk kepada memori yang diuruskan. Melakukannya boleh membawa kepada tingkah laku yang tidak dapat diramalkan dan berkemungkinan salah.
Atas ialah kandungan terperinci Apa yang Berlaku kepada Penunjuk yang Merujuk Objek Yang Sama Selepas Satu Dipadamkan dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!