Memahami Penentuan Saiz Tatasusunan pada Masa Larian tanpa Peruntukan Dinamik
Mendapatkan penjelasan mengenai kesahihan penentuan saiz tatasusunan pada masa larian tanpa peruntukan dinamik, ia berbaloi untuk meneroka pengenalan tatasusunan bersaiz berubah C99 pada tindanan.
Dalam coretan kod yang disediakan:
int main(int argc, char **argv) { size_t size; cin >> size; int array[size]; ... return 0; }
Saiz tatasusunan ditentukan secara dinamik pada masa jalan berdasarkan input pengguna yang disimpan dalam pembolehubah saiz. Tingkah laku ini disokong oleh C99, yang membolehkan tatasusunan bersaiz berubah-ubah diisytiharkan pada tindanan.
Tidak seperti peruntukan memori dinamik menggunakan malloc atau baharu, yang memperuntukkan memori daripada timbunan, tatasusunan bersaiz berubah-ubah diperuntukkan pada timbunan itu. Pengkompil melaraskan penuding tindanan dengan sewajarnya, sama seperti cara ia mengendalikan tatasusunan bersaiz statik (cth., tatasusunan int[100]).
Adalah penting untuk ambil perhatian bahawa tatasusunan bersaiz pembolehubah pada tindanan adalah berbeza daripada yang diperuntukkan secara dinamik tatasusunan. Yang pertama tidak melibatkan peruntukan timbunan dan beroperasi secara langsung pada timbunan, manakala yang terakhir menggunakan ingatan timbunan.
Atas ialah kandungan terperinci Bolehkah Tatasusunan C99 Disaizkan pada Masa Jalan Tanpa Peruntukan Memori Dinamik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!