如果执行以下行:
void dummy () {
int n;
scanf ("%d", &n);
int A[n];
}
阵列A是在STACK上还是在HEAP上分配?
答案 0 :(得分:5)
这应该是C或C ++问题吗?
请注意,您的数组声明在C ++中是正式非法的。使用非常量表达式在数组声明中指定数组大小是非法的。
假设您的C ++编译器支持此声明(从C语言借用此功能),A
是本地数组对象。它的分配方式与声明没有链接的任何其他本地对象相同,即具有自动存储持续时间(术语中的“堆栈”)。