首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >递归函数的内存分配

递归函数的内存分配
EN

Stack Overflow用户
提问于 2014-04-21 05:24:59
回答 11查看 14.5K关注 0票数 6

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

EN

回答 11

Stack Overflow用户

回答已采纳

发布于 2014-04-21 05:32:50

递归函数与任何其他函数没有什么不同--自动局部变量被分配为单个块,方法是将堆栈指针向前推进到足以计算其大小之和(加上对齐所需的任何填充)。

每个递归调用都以这种方式推送一个新堆栈框架,然后当它返回时弹出它。如果递归未能到达基本情况,堆栈将迅速耗尽,从而导致同名堆栈溢出崩溃。

票数 10
EN

Stack Overflow用户

发布于 2014-04-21 05:30:27

递归调用函数就像任何其他函数一样。因此,内存的分配方式与调用任何常规函数的方式相同。

票数 2
EN

Stack Overflow用户

发布于 2014-04-21 05:30:35

它与调用任何其他函数相同。变量(而不是引用传递的变量)被分配到堆栈上。当函数开始返回时(即到达基本情况),堆栈将按每次嵌套递归调用中推到堆栈的顺序弹出。

这个youtube视频很好地解释了递归函数的调用堆栈:https://www.youtube.com/watch?v=k0bb7UYy0pY

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23191320

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档