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