C中的动态内存分配?
为什么这样做?
#include <iostream> int main() { std::cout << "Enter a number: "; int arraySize; std::cin >> arraySize; int array[arraySize]; for(int element : array) { element = 42; std::cout << element << "n"; } std::cout << "Array size: " << sizeof(array) << "n"; std::cout << "Element count: " << sizeof(array)/sizeof(int); return 0; } 我对C中动态内存分配的理解告诉我,需要它的一种情况是你不知道在编译时需要分配的内存量.在这个程序中,显然编译程序时数组大小是未知的,但是是动态的,因为它可以随用户输入的值而改变. 以下是在成功编译(警告和无错误)后运行的程序: 输入一个数字:12 如您所见,使用用户定义的元素数量创建了一个数组, 为什么这不算作动态内存分配和编译? 解决方法
这个可变长度数组(VLA)的声明不是标准的:
int array[arraySize]; 此行与g编译的原因是编译器已将此功能提供为extension:
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |