【发布时间】:2013-02-25 04:34:54
【问题描述】:
我知道int* array = new int [n]; 在堆中分配内存空间。
但是,如果我在代码块中声明这样的内容:int array[n];,它将成功编译,但如果我将其移至 Visual Studio,则会出现错误。
我想问的是:
int[n]的真正作用是什么?它与堆分配相比如何?它们有什么区别?如果我使用
int array[n]而不是int* array = new int [n];,会出现什么错误?
【问题讨论】:
-
可变长度不应用于静态大小的数组。 Codeblocks 接受它是因为 GCC 可能支持它作为扩展。
-
取自 GCC 文档:
Variable-length automatic arrays are allowed in ISO C99, and as an extension GCC accepts them in C90 mode and in C++.
标签: c++ arrays heap-memory