Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/143.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
gcc中的可变长度数组 我是一个C++程序员。所以,我刚刚了解到gcc有一个扩展,它允许可变大小的数组,而无需动态分配内存。我想知道这个大小可变的数组是在堆栈还是堆中分配的_C++_Arrays_Gcc - Fatal编程技术网

gcc中的可变长度数组 我是一个C++程序员。所以,我刚刚了解到gcc有一个扩展,它允许可变大小的数组,而无需动态分配内存。我想知道这个大小可变的数组是在堆栈还是堆中分配的

gcc中的可变长度数组 我是一个C++程序员。所以,我刚刚了解到gcc有一个扩展,它允许可变大小的数组,而无需动态分配内存。我想知道这个大小可变的数组是在堆栈还是堆中分配的,c++,arrays,gcc,C++,Arrays,Gcc,可变大小的数组在堆栈中分配。可变大小的数组在堆栈中分配。从概念上讲,它是通过自动存储持续时间分配的,因此在实现方面,您可以将其视为在堆栈上 请考虑使用 STD::vector < /C>作为一个替代标准,因此,可移植的C++()概念上它被分配为自动存储持续时间,因此在实现方面,您可以将其视为堆栈。 考虑使用 STD::vector < /C>作为标准,因此,C++的C++(./P>< P> VLA)不支持C++标准,尽管一些编译器如GCC确实将它们作为扩展。 GCC实现中的std::vector

可变大小的数组在堆栈中分配。

可变大小的数组在堆栈中分配。

从概念上讲,它是通过自动存储持续时间分配的,因此在实现方面,您可以将其视为在堆栈上


<>请考虑使用<代码> STD::vector < /C>作为一个替代标准,因此,可移植的C++(

)概念上它被分配为自动存储持续时间,因此在实现方面,您可以将其视为堆栈。


考虑使用<代码> STD::vector < /C>作为标准,因此,C++的C++(./P>< P> VLA)不支持C++标准,尽管一些编译器如GCC确实将它们作为扩展。 GCC实现中的std::vector VLA

  • vector可以调整大小并在堆上分配内存
  • VLA不可调整大小,受最大堆栈大小限制,不分配内存
因此,存在灵活性差异,并且可能存在性能差异,特别是在定期创建阵列(例如在紧密循环中)的情况下


上述的一些差异有时可以通过例如“环”外的“数组”移动

VLA,而不被C++标准支持,尽管一些编译器如GCC确实将它们作为扩展。 GCC实现中的std::vector VLA

  • vector可以调整大小并在堆上分配内存
  • VLA不可调整大小,受最大堆栈大小限制,不分配内存
因此,存在灵活性差异,并且可能存在性能差异,特别是在定期创建阵列(例如在紧密循环中)的情况下


也就是说,有些差异有时可以通过将“数组”移出循环等方式来缓解

它是向量动态的?我听说向量是相对的slower@SuryaK这是过早的优化。不要那样做<代码>标准::向量速度惊人。如果你不这么认为,那么对它进行基准测试,然后再回来。现在就坚持使用
std::vector
。@SuryaK“我听说vector相对较慢”,如果使用得当,效果并不明显。使用初始分配计数,或使用
reserve()
。它是向量动态的?我听说向量是相对的slower@SuryaK这是过早的优化。不要那样做<代码>标准::向量速度惊人。如果你不这么认为,那么对它进行基准测试,然后再回来。现在就坚持使用
std::vector
。@SuryaK“我听说vector相对较慢”,如果使用得当,效果并不明显。使用初始分配计数,或者使用
reserve()
。因此,这意味着使用VLA来保存大数据是个坏主意,而使用动态分配的数组或std::vector更好。对吗?我建议使用动态分配数组而不是Vlaso,这意味着使用VLAs保存大数据是个坏主意,而使用动态分配数组或std::vector更好。对吗?我建议通过VLA动态分配阵列