堆栈帧的大小总是固定的?

Poo*_*ria 6 c++ size callstack function

在 C++ 程序执行期间,特定函数的堆栈帧是否始终具有恒定大小,或者在某些情况下允许编译器进行动态堆栈管理,类似于 alloca() 函数的作用?为了更好地描述它,我的意思是堆栈帧中特定局部变量或对象的偏移量可能会在函数的不同执行时发生变化

Tho*_*ews 1

在常见的实现中,局部变量放置在堆栈帧上。某些函数可能具有由寄存器容纳的变量,而其他函数则将变量放置在堆栈中。

堆栈帧也可以通过语句块中声明的非静态变量来扩展。

堆栈帧没有标准的最小大小。堆栈帧的最大大小取决于平台和实现。常见的实现是让栈向堆扩展,堆向栈扩展。