Bolehkah Anda Tentukan Saiz Tatasusunan yang Diperuntukkan dengan `T[] baru dalam C ?

DDD
Lepaskan: 2024-11-08 05:39:01
asal
290 orang telah melayarinya

Can You Determine the Size of an Array Allocated with `new T[]` in C  ?

Bolehkah Tatasusunan yang Diperuntukkan dengan T[] baharu Mendedahkan Saiznya?

Berbeza dengan pemadaman rakan sejawatannya[], yang sememangnya mengetahui saiz tatasusunan yang diperuntukkan, C tidak mempunyai mekanisme untuk memastikan saiz tatasusunan secara pemrograman yang dibuat menggunakan tatasusunan baru T[].

Menyelami Perbezaan

Inti ketaksamaan ini terletak pada sifat intrinsik pemadaman[]. Semasa penyusunan, saiz tatasusunan dipelihara dengan teliti oleh masa jalan atau pengurus memori sistem pengendalian. Walau bagaimanapun, maklumat ini masih tidak boleh diakses oleh pengkompil. Sebaliknya, sizeof(), operan kepada pengkompil dan bukannya fungsi tulen, tidak boleh menentukan saiz tatasusunan yang diperuntukkan secara dinamik kerana takatnya tidak pasti pada masa penyusunan.

Contoh Ilustrasi

Pertimbangkan contoh kod ini:

int *arr = new int[256];
int *p = &arr[100];
printf("Size: %d\n", sizeof(p));
Salin selepas log masuk

Di sini, pengkompil menghadapi dilema yang membingungkan: bagaimana untuk menentukan saiz p. Penunjuk tatasusunan tidak mempunyai pengetahuan sedia ada tentang permulaan atau penghujung blok memori yang diperuntukkan. Ia mungkin menunjukkan permulaan blok, elemen tertentu di dalamnya atau malah lokasi sewenang-wenangnya.

Had Tersendiri

tatasusunan C dan C, tidak seperti kelas pertama objek, merosot menjadi penunjuk. Pengkompil dan program sama-sama tidak mengetahui sama ada penuding mengenal pasti permulaan blok baharu, objek individu atau alamat perantaraan.

Pilihan reka bentuk ini berpunca daripada sifat pengurusan memori yang diwakilkan dalam C dan C , meninggalkan kepada pengaturcara dan sistem pengendalian. Pelaksanaan baharu dan pemadaman sangat berbeza-beza merentas platform dan senario, menghalang penyeragaman dalam standard C.

Atas ialah kandungan terperinci Bolehkah Anda Tentukan Saiz Tatasusunan yang Diperuntukkan dengan `T[] baru dalam C ?. 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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!