Có hai cách để cấp phát bộ nhớ cho một mảng, trong đó kích thước không được biết lúc đầu. Cách phổ biến nhất là sử dụng malloc
như thế nàymảng malloced VS. variable-length-array
int * array;
... // when we know the size
array = malloc(size*sizeof(int));
Nhưng đó là hợp lệ quá trong C99 để xác định các mảng sau khi chúng tôi biết kích thước.
... // when we know the size
int array[size];
Có phải họ hoàn toàn không?
Thứ hai, ngay cả trong C99, không phải lúc nào cũng hợp lệ. Theo C99 §6.10.8.3 Macro tính năng có điều kiện, việc triển khai có thể xác định ** __ STDC_NO_VLA __ ** và *** không *** thực hiện các mảng độ dài biến, và * vẫn tuân thủ tiêu chuẩn. * – WhozCraig
** Đây không phải là câu hỏi trùng lặp **! Không có câu hỏi nào trong số các câu hỏi được tham chiếu có chi tiết về sự khác biệt. – Jens
@WhozCraig AFAIK, đó là một điều 2011. Không có phần như vậy trong những gì tôi có mà purports là một bản sao của tiêu chuẩn C99. –