关于C99规范中动态数组的疑问解决思路
关于C99规范中动态数组的疑问
比如:
a的地址在栈区,还是堆区?
我输出n和 a的地址发现它们和接近,再定义几个变量,对a的地址也有影响。说明在栈区?
所以a的存储空间不能用free释放了?
你们这么用过动态数组吗?还是用以前的malloc
------解决方案--------------------
栈区。
意义不大的功能,因为栈里无法分配大块内存的。
就别折腾这个语法了。
------解决方案--------------------
a在栈区中,其分配的数组也在栈中,所以不能用malloc释放
------解决方案--------------------
你都验证过了
------解决方案--------------------
比如:
- C/C++ code
int n; scanf("%d",&n); int a[n];
a的地址在栈区,还是堆区?
我输出n和 a的地址发现它们和接近,再定义几个变量,对a的地址也有影响。说明在栈区?
所以a的存储空间不能用free释放了?
你们这么用过动态数组吗?还是用以前的malloc
------解决方案--------------------
栈区。
意义不大的功能,因为栈里无法分配大块内存的。
就别折腾这个语法了。
------解决方案--------------------
a在栈区中,其分配的数组也在栈中,所以不能用malloc释放
------解决方案--------------------
你都验证过了
------解决方案--------------------
- C/C++ code
记得一句话: 变长数组必须是自动存储类的, 他们必须在函数内部或作为函数参量声明, 而且声明时不可以进行初始化. 这个变只是维数可以用变量来指定而已. 不是说他创建后就可以修改其大小.