You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何该递归程序内存耗尽?栈溢出的内存占用原因解析

递归程序栈溢出的原因分析

你这段代码是无限递归,没有终止条件,每次调用neverEnd都会在内存的调用栈里新增一个栈帧,最终把栈空间撑爆导致溢出。

每个函数调用生成的栈帧里包含这些占用内存的内容:

  • 返回地址:记录当前函数执行完后,要回到上一层代码的哪个位置继续执行(比如每次neverEnd里调用完自身后,本来要回到console.log之后的位置,但因为无限递归,这个返回地址永远不会被用到)
  • 函数执行的上下文状态:比如调用前的寄存器值、栈指针位置等,用来保证函数返回后能恢复之前的执行环境
  • 即便你这个函数没有定义局部变量和参数,栈帧本身的结构依然会占用固定的内存空间

调用栈的总内存是有限制的(不同运行环境下大小不同),无限递归会不断创建新栈帧,直到栈空间被彻底耗尽,最终触发栈溢出错误。

内容的提问来源于stack exchange,提问作者DCR

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 05:43:09