我知道在 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++)没有提示,为什么? 那里有隐藏的内存分配吗?
最佳答案
可变长度数组不是 C++ 标准的一部分。它是G++提供的扩展。
如果您使用 -pedantic
标志编译它,那么编译器将发出警告。
关于c++ - 隐藏内存分配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47418703/