Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah `padam[]` Mengetahui Saiz Tatasusunan Yang Dipadamkannya?

Bagaimanakah `padam[]` Mengetahui Saiz Tatasusunan Yang Dipadamkannya?

Barbara Streisand
Barbara Streisandasal
2024-11-17 09:07:03750semak imbas

How Does `delete[]` Know the Size of the Array It's Deleting?

Padam[] dan Pengesanan Tatasusunan

Dalam C , padam[] digunakan untuk memadam tatasusunan yang diperuntukkan menggunakan[] baharu. Walau bagaimanapun, bagaimanakah sistem mengetahui bahawa penunjuk menunjuk kepada tatasusunan?

Penyusun dan Sistem Pengendalian

Walaupun soalan asal menunjukkan bahawa bahasa atau pengkompil tidak mengetahui jenis penunjuk, realitinya lebih bernuansa. Pengkompil tidak tahu sama ada penunjuk ialah tatasusunan atau penunjuk elemen tunggal. Walau bagaimanapun, sistem pengendalian (OS) boleh menjejaki jenis peruntukan yang dibuat dengan baharu.

Pengurusan Memori

Apabila tatasusunan diperuntukkan menggunakan baharu[], memori diperuntukkan bukan sahaja untuk elemen tatasusunan tetapi juga untuk metadata yang merangkumi saiz tatasusunan. Metadata ini disimpan dalam pengepala sebelum elemen tatasusunan. Apabila padam[] digunakan, OS menyemak pengepala ini untuk menentukan saiz tatasusunan.

Elemen Tunggal lwn Tatasusunan

Dalam kes di mana satu elemen diperuntukkan menggunakan baru (seperti int* num = new int(1);), tiada metadata ditambahkan. Oleh itu, apabila deleteForMe(num); dipanggil, OS hanya memadamkan satu int.

Atas ialah kandungan terperinci Bagaimanakah `padam[]` Mengetahui Saiz Tatasusunan Yang Dipadamkannya?. 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