c++ - 隐藏内存分配?

标签 c++ c arrays c++11 memory-management

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

相关文章:

c++ - 如何在相关数据结构中存储 JSON 键值(我用 cpp boost 解析过)?

c++ - 通过迭代器更改对象成员?

java - 如何计算char数组中每个字符出现的次数?

c++ - 数组大小超过函数大小 (C++)

c++ - 用 C (mbed) 将字符写入文件?

c++ - OpenCV Mat 在 push_back 时崩溃

c - 如何在数字中添加空格,以千为单位分组?

c - 如何正确使用OpenMP?

c - Sizeof List 和遍历

将结构数组的索引与 NULL 进行比较,而不是评估为 true;