Rumah >pembangunan bahagian belakang >C++ >Bolehkah Anda Tentukan Saiz Tatasusunan yang Diperuntukkan dengan `baru` dalam C?
Bolehkah anda mendapatkan saiz tatasusunan yang diperuntukkan dengan T[] baharu?
Soalan ini meneroka cabaran menentukan saiz tatasusunan C secara pemrograman yang diperuntukkan pada timbunan menggunakan operator baharu.
Mengapa ini Mencabar?
Tidak seperti tatasusunan yang diisytiharkan pada tindanan (int arr[256];), yang mempunyai saiz tetap yang diketahui semasa penyusunan, tatasusunan yang diperuntukkan dengan yang baru mempunyai saiznya ditentukan secara dinamik pada masa jalan. Ini bermakna pengkompil tidak dapat mengetahui saiz tatasusunan sedemikian semasa penyusunan, dan operator saiz bagi hanya mengembalikan saiz penuding itu sendiri.
Had Penyusun
saiznya ialah dinilai secara statik oleh pengkompil, bermakna ia tidak boleh digunakan untuk tatasusunan yang diperuntukkan secara dinamik. Selain itu, tatasusunan C bukanlah objek kelas pertama dan mereput menjadi penunjuk, menyukarkan pengkompil atau atur cara untuk membezakan antara penunjuk kepada permulaan tatasusunan yang diperuntukkan dan penunjuk kepada objek tunggal atau lokasi memori sewenang-wenangnya.
Pengetahuan Runtime
padam [] mengetahui saiz yang diperuntukkan, tetapi pengetahuan ini berada dalam masa jalan atau pengurus memori sistem pengendalian dan tidak boleh diakses semasa penyusunan.
Pertimbangan Pengurusan Memori
C dan C menyerahkan pengurusan memori kepada pengaturcara dan sistem pengendalian. Akibatnya, melaksanakan baharu dan padam adalah bergantung pada platform dan mungkin tidak melibatkan penjejakan saiz tatasusunan yang diperuntukkan. Pendekatan ini membolehkan pengurusan memori yang cekap dan fleksibel pada pelbagai sistem, tetapi ia mengorbankan keupayaan untuk mendapatkan saiz tatasusunan secara pemrograman.
Atas ialah kandungan terperinci Bolehkah Anda Tentukan Saiz Tatasusunan yang Diperuntukkan dengan `baru` dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!