可变长度数组中的运行时间损失?

时间:2014-11-12 08:33:22

标签: c++

参考Stackoverflow问题标题"variable length arrays in C++"我们知道以下是有效的

void foo(int n) {
    int values[n]; //Declare a variable length array
}

我已经读过这里存在一个小的运行时间惩罚(在可变长度数组中)。有人可以很好地解释在这种背景下的情况吗?

我也会尽我所能找到我读到它的链接。我道歉,我不能在这里提及。

1 个答案:

答案 0 :(得分:3)

IICC,与海湾合作委员会一起,与VLA有关:

  • 不会内联
  • 需要为帧指针使用额外的寄存器(即-fomit-frame-pointer适用于非VLA函数),因此该函数需要执行的其他工作可以使用少一个寄存器。