Bagaimanakah `padam[]` Mengetahui Saiz Tatasusunan Apabila Berurusan dengan Penunjuk?

DDD
Lepaskan: 2024-11-17 22:25:02
asal
692 orang telah melayarinya

How Does `delete[]` Know the Size of an Array When Dealing with Pointers?

Bagaimanakah padam[] Membezakan Tatasusunan daripada Penunjuk Lain?

Dalam C , pengendali padam[] mengagihkan memori yang diperuntukkan untuk tatasusunan, tetapi bagaimanakah ia tahu bila penuding ialah tatasusunan?

Pertimbangan Pengkompil

Walaupun terdapat ketidakpastian dalam kod yang anda berikan, pengkompil tidak dapat menentukan sama ada penuding menghala ke tatasusunan atau satu elemen.

Maklumat Tatasusunan Terurus

Tatasusunan yang diperuntukkan secara dinamik menyimpan maklumat tambahan di luar penuding kepada elemen pertama. Maklumat ini termasuk bilangan elemen dalam tatasusunan.

Padam[] Operasi

Apabila padam[] digunakan pada penuding tatasusunan, ia menggunakan maklumat tambahan untuk :

  • Kenal pasti bahawa peruntukan ialah tatasusunan.
  • Agihkan bilangan elemen yang sesuai.

Sintaks "Padam" Alternatif

Sesetengah telah mempersoalkan keperluan untuk sintaks padam[] yang berasingan memandangkan perpustakaan masa jalan sudah mengurus maklumat saiz tatasusunan. Walau bagaimanapun, prinsip reka bentuk asal C berusaha untuk meminimumkan overhed untuk pengguna bukan tatasusunan dengan mengelakkan peruntukan ruang tambahan untuk blok memori bukan tatasusunan.

Padam[] Kekhususan

Oleh itu, padam[] digunakan untuk memberitahu pustaka masa jalan dengan jelas bahawa memori yang diperuntukkan ialah tatasusunan, membolehkan mereka mengagihkannya dengan betul. Walaupun ini mungkin kelihatan berlebihan dalam pengkomputeran moden, ia masih boleh memberi manfaat dalam senario di mana pengoptimuman memori adalah kritikal.

Atas ialah kandungan terperinci Bagaimanakah `padam[]` Mengetahui Saiz Tatasusunan Apabila Berurusan dengan Penunjuk?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan