【发布时间】:2015-10-17 04:18:04
【问题描述】:
C 有一个非常酷的特性,称为可变长度数组。它在 C90 及更高版本中可用,它允许将数组的大小推迟到运行时。请参阅 GCC 的手册 6.19 Arrays of Variable Length。
我正在使用 C++。在std=c++11,由于在Cygwin 下使用alloca,我遇到了编译失败。如果可能的话,我想切换到可变长度数组。我也想尽量避免std::vector 和std::array,因为我想远离内存管理器。我相信每一点都会有所帮助,所以我很高兴抓住这些机会(有些人认为这是窥视孔)。
我可以在 C++03 和 C++11 中使用变长数组吗?
【问题讨论】:
-
使用alloca可以实现VLA
-
在程序上设置一些合理的界限并使用静态大小的数组会不会有问题?
-
困扰我的不是边界检查。每次调用这个特定函数时,它都会一次又一次地进入内存管理器......因为我不能依赖动态数组(感谢 Basile),我将不得不考虑切换到
std::array,因为这是 C++ 11。
标签: c++ arrays c++11 gcc variable-length-array