Tôi đã sử dụng C++ trong một vài năm và hôm nay tôi đã thấy một số mã, nhưng làm thế nào điều này có thể hoàn toàn hợp pháp?Kích thước mảng tại thời gian chạy mà không có phân bổ động được cho phép?
int main(int argc, char **argv)
{
size_t size;
cin >> size;
int array[size];
for(size_t i = 0; i < size; i++)
{
array[i] = i;
cout << i << endl;
}
return 0;
}
Được biên soạn theo GCC.
Kích thước có thể được xác định tại thời gian chạy như thế nào mà không cần new
hoặc malloc
?
Chỉ cần kiểm tra kỹ, tôi đã googled một số và tất cả các mã tương tự của tôi được xác nhận là cung cấp lỗi kích thước bộ nhớ.
Ngay cả chương trình C++ của Chương trình Làm thế nào để p. 261 trạng thái theo Lỗi lập trình chung 4.5:
Chỉ có thể sử dụng các hằng số để khai báo kích thước mảng tự động và tĩnh.
Làm sáng tỏ tôi.
lưu ý rằng DMA có nghĩa là "truy cập bộ nhớ trực tiếp" - Tôi nghĩ bạn đang hỏi về phân bổ động –
C hoặc C++? Chọn một_. –
Một lần nữa, chọn một: C hoặc C++. Câu hỏi này là một cách rõ ràng và chỉ về C; không nên có một thẻ C++. –