gcc中的可变延长阵列

Variable lengthed array in gcc

本文关键字:阵列 gcc      更新时间:2023-10-16

我是开始C 程序员。因此,我刚刚了解到,GCC具有一个扩展名,可以将大小的数组变化而无需动态分配内存。我想知道这个大小的数组是在堆栈还是堆中分配。

概念上是用自动存储持续时间分配的,因此在实现方面,您可以将其 think 作为堆栈。

确实考虑使用std::vector作为替代方案,因为这是标准的,因此可以使用CC 。

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

vla不受C 标准的支持,尽管某些编译器(例如GCC)确实将其作为扩展名。

std :: vector<> vla在GCC实施中。

  • std :: vector是可以解决的,并且可以在堆上分配内存。
  • vla无法解析,受到最大堆栈大小的限制,并且不分配内存。

因此存在灵活性差异,并且可能存在性能差异,尤其是在定期发生阵列的情况下(例如在紧密的环中)。

也就