堆栈动态和堆栈动态数组

stack dynamic and stack dynamic array

本文关键字:堆栈 动态 数组      更新时间:2023-10-16

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

如备注中所述,堆栈动态数组来自C++标准。

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

当在局部变量中引入动态数组时,编译器必须考虑用于数组访问放置在数组"之后"的局部变量的大小,以便在没有数组的情况下将其添加到常量偏移量处。为此,我们可以很容易地想象元素的大小/数量也放置在数组"之前"的堆栈中,允许生成的代码读取它以进行偏移计算。很明显,动态数组对性能有影响