可变长度数组中的运行时惩罚

Run time penalty in Variable Length arrays?

本文关键字:运行时 惩罚 数组      更新时间:2023-10-16

参考堆栈溢出问题标题"C++中的可变长度数组",我们知道以下是有效的

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

我读到这里存在一个小的运行时惩罚(在可变长度数组中)。有人能很好地解释一下这是什么吗?

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

IIRC,带GCC,带VLA的功能:

  • 不会内联
  • 需要为帧指针使用一个额外的寄存器(也就是说,-fomit-frame-pointer在非VLA函数上工作),因此该函数需要做的其他工作少了一个寄存器