Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Apa yang Berlaku kepada Penunjuk yang Merujuk Objek Yang Sama Selepas Satu Dipadamkan dalam C ?

Apa yang Berlaku kepada Penunjuk yang Merujuk Objek Yang Sama Selepas Satu Dipadamkan dalam C ?

Susan Sarandon
Susan Sarandonasal
2024-11-01 11:29:30758semak imbas

What Happens to Pointers Referencing the Same Object After One is Deleted in C  ?

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:

  • Menetapkan kepada c daripada penuding yang dipadamkan sebelum ini menyebabkan tingkah laku yang tidak ditentukan kerana a kini penunjuk yang tidak sah nilai.
  • Walau bagaimanapun, d menunjuk kepada salinan yang dibuat sebelum pemadaman. Walaupun membaca nilai b menunjukkan kepada lokasi memori yang dialokasikan, tindakan ini ditakrifkan pelaksanaan.

C 14 Gelagat:

  • Menetapkan kepada kedua-dua c dan d daripada penunjuk a yang tidak sah masih menyebabkan gelagat yang tidak ditentukan.
  • Menyalin nilai penunjuk tidak sah, seperti yang dilakukan di sini dengan b, juga merupakan tingkah laku yang ditentukan pelaksanaan.

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn