我是一名C ++程序员。所以,我刚刚了解到gcc有一个扩展,允许可变大小的数组,而不必动态分配内存。我想知道这个可变大小的数组是否在堆栈或堆中分配。
答案 0 :(得分:5)
从概念上讲,它被分配了自动存储持续时间,因此在实现方面,你可以认为它在堆栈中。
请考虑使用std::vector
作为替代方案,因为它是标准的,因此也是可移植的C ++。
答案 1 :(得分:0)
可变大小的数组在堆栈中分配。
答案 2 :(得分:0)
C ++标准不支持VLA,尽管某些编译器(如GCC)确实将它们作为扩展。
std :: vector<> GCC实施中的VLA。
因此存在灵活性差异,并且可能存在性能差异,尤其是在阵列创建定期发生时(例如在紧密循环中)。
也就是说,有时可以通过移动“阵列”来减轻这些差异中的一些差异。在循环之外等等