我真的不明白为什么我不能在堆栈上有一个可变大小的数组,所以像
foo(int n) {
int a[n];
}
据我了解部分数据段的堆栈(段),因此它不是“恒定大小”。
变长数组(VLA)根据 C++ 标准,C++ 中不允许这样做。
许多编译器(包括 gcc)都支持它们作为编译器扩展,但需要注意的是,任何使用此类扩展的代码都是不可移植的。
C++提供std::向量用于实现类似的功能VLA.
有一个proposal在 C++11 中引入可变长度数组,但最终被放弃,因为它需要对 C++ 中的类型系统进行大量更改。能够在堆栈上创建小型数组而不浪费空间或为未使用的元素调用构造函数的好处被认为对于 C++ 类型系统中的大变化来说不够重要。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)