递归函数的内存分配

Kan*_*eja 5 c c++ memory recursion memory-management

调用递归函数时如何分配内存?一个函数有自己分配的内存.调用它时,参数(不是引用传递的参数)和变量获取内存.因此,当从它的体内再次调用该函数时,如何将内存分配给第二个调用的变量和参数?

Dre*_*all 9

递归函数与任何其他函数没有区别 - 通过将堆栈指针推进到足以考虑其大小总和(加上对齐所需的任何填充),将自动局部变量分配为单个块.

每个递归调用以这种方式推送一个新的堆栈帧,然后在它返回时弹出它.如果递归未能达到基本情况,则堆栈将很快耗尽,从而导致同名Stack Overflow崩溃.