堆栈动态和堆栈动态数组

时间:2019-04-27 09:31:58

标签: c++ c compiler-construction

C / C ++编译器如何处理固定的堆栈动态和堆栈动态数组。 通过查看汇编代码中这些变量的地址,我看到了静态变量与堆栈动态变量的区别。

1 个答案:

答案 0 :(得分:0)

如前所述,来自C ++标准的动态数组。

当没有局部/堆栈动态数组时,堆栈中每个局部变量的位置都是与当前函数关联的帧中的恒定偏移量

在局部变量中引入动态数组时,编译器必须考虑用于访​​问位于数组“之后”的局部变量的数组大小,以在没有数组的恒定偏移量处添加它。为此,我们可以轻松地想象元素的大小/数量也被放置在数组“之前”的堆栈中,从而允许生成的代码读取它进行偏移量计算。所以很明显,动态数组会对性能产生影响