【发布时间】:2011-11-17 13:24:15
【问题描述】:
可能重复:
Dynamic array in Stack?
How do compilers treat variable length arrays
我辅导的某个人写了一段代码,看起来像这样,编译、运行正常,让我在这个过程中感觉自己是一个完整的 C++ 初学者:
int main(int argc, char** argv)
{
int Index=0;
cin>>Index;
int Test_array[Index][Index];
...
}
现在,我在这里找到了为什么它有效的答案:about the array in C
但是,我仍然对如何进行询问。
我的意思是,代码块的堆栈大小应该提前知道,对吧?所以可以肯定的是,Test_array 不能存储在堆栈中...
编译器是否在后台执行 new/malloc-delete/free 操作以将堆内存用于数组?
在这种情况下,如果在堆上找不到足够的内存,这样的代码会抛出 bad_alloc 异常吗?
【问题讨论】:
-
这不是标准的 C++。可变长度数组是一些编译器支持的扩展。
-
之前被问过很多次。
-
不是重复的:问题不是“这有效吗?”,而是“编译器如何做到这一点?”