【发布时间】:2018-05-05 05:56:33
【问题描述】:
我知道在C99中你可以声明一个数组,它的大小是一个参数的值,像这样:
void foo(int size) {
int array[size];
// do stuff
}
据我了解,它是在调用函数时分配在堆栈上的。显然这不应该在 C++ 中工作。
最近我用 C++ 写了这样的东西:
void bar(vector<Thing> vec) {
for (Thing t : vec) {
int n = t.get_n();
int array[n];
// do stuff
}
}
令人惊讶的是编译器(G++)没有抱怨,为什么? 那里有隐藏的内存分配吗?
【问题讨论】:
-
因为你没有开启警告,而且是gcc扩展
标签: c++ c arrays c++11 memory-management