gpt4 book ai didi

c++ - 隐藏内存分配?

转载 作者:行者123 更新时间:2023-11-30 18:19:37 26 4
gpt4 key购买 nike

我知道在 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com