【发布时间】:2014-03-27 15:09:32
【问题描述】:
我一直认为 c++ 中不允许使用可变长度数组(请参阅:Why aren't variable-length arrays part of the C++ standard?)。但是为什么这段代码可以编译和工作?
#include <iostream>
using namespace std;
int main () {
int n;
cin >> n;
int a[n];
for (int i=0; i<n; i++) {
a[i] = i;
}
for (int i=0; i<n; i++) {
cout << a[i] << endl;
}
}
【问题讨论】:
-
可变长度数组将在 C++14 中使用
-
它们由 C99 和 GCC >= 4.7 指定(以及 Clang 太 AFAIK)也将其作为 C++ 的扩展。
-
VLA 没有进入 C++14
-
为什么没有人提到
vector?! -
@MarsonMao 变长数组,如果实现的话会在栈中分配内存,而vector在堆中分配内存。
标签: c++ variable-length-array gcc-extensions clang-extensions