关于C99规范中动态数组的疑问解决思路

关于C99规范中动态数组的疑问
比如:
C/C++ code

int n;
scanf("%d",&n);

int a[n];



a的地址在栈区,还是堆区?

我输出n和 a的地址发现它们和接近,再定义几个变量,对a的地址也有影响。说明在栈区?

所以a的存储空间不能用free释放了?


你们这么用过动态数组吗?还是用以前的malloc

------解决方案--------------------
栈区。
意义不大的功能,因为栈里无法分配大块内存的。
就别折腾这个语法了。
------解决方案--------------------
a在栈区中,其分配的数组也在栈中,所以不能用malloc释放
------解决方案--------------------
你都验证过了
------解决方案--------------------
C/C++ code
记得一句话:

变长数组必须是自动存储类的,

他们必须在函数内部或作为函数参量声明, 

而且声明时不可以进行初始化.

这个变只是维数可以用变量来指定而已. 

不是说他创建后就可以修改其大小.