我可以在C++ 03和C++ 11中使用C可变长度数组吗?

jww*_*jww 3 c++ arrays gcc variable-length-array c++11

C有一个很酷的功能叫做可变长度数组.它在C90及更高版本中可用,它允许延迟阵列的大小直到运行时.参见GCC的手册6.19可变长度阵列.

我在C++工作.在std=c++11,由于使用了allocaCygwin ,我正在捕获编译失败.如果可能,我想切换到可变长度数组.我也想尝试避免std::vector,std::array因为我想要远离内存管理器.我相信每一点点都有帮助,所以我很乐意抓住这些机会(有些人认为是窥视孔).

我可以在C++ 03和C++ 11中使用可变长度数组吗?

Bas*_*tch 8

VLA不在标准的C++ 03或C++ 11中,所以如果你想编写严格的标准符合代码(并使用例如std::vector通常使用堆来获取数据的代码),你最好避免使用它们,但是你可以使用你的自己的分配器......).

但是,一些C++编译器(最近的GCCClang)正在接受VLA作为扩展.

这是相同的柔性阵列成员 ; 它们不是C++的标准(仅限C语言),但有些编译器接受它们.

dynarray -s没有进入C++ 11标准......