1001 递归太深;堆栈溢出是什么意思

1001递归太深;堆栈溢出是什么意思... 1001 递归太深;堆栈溢出是什么意思 展开
 我来答
LaceTao
推荐于2017-10-05 · TA获得超过348个赞
知道答主
回答量:227
采纳率:0%
帮助的人:259万
展开全部
溢出的意思就是越界,操作系统会给每个进程分配一个最大上限的堆栈空间,如果超过了这个内存空间大小程序就会coredump,就像你使用int *pi = new int[100000000];会崩溃一样,因为这里堆溢出了。
操作系统分配给一个进程的栈空间是2M,堆空间在32位机器上是4G。如果你的进程的栈空间使用超过了2M就会栈溢出,堆使用超过4G就会堆溢出。
那么递归为什么会导致栈溢出呢?相信楼主知道栈的出入规则,先入后出,递归的话那么先入的一致不能出栈,会一致存在栈空间中,这样就容易导致栈满而溢出。
哈哈,还有不懂不?
359822528
2011-10-12 · TA获得超过183个赞
知道小有建树答主
回答量:293
采纳率:0%
帮助的人:230万
展开全部
递归的层度太多了却还没有到达结束条件,以至于超出了系统所能承受的程度
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友0c14fe6
2011-10-14 · TA获得超过912个赞
知道小有建树答主
回答量:695
采纳率:0%
帮助的人:648万
展开全部
每当你调用一个函数,在这个函数执行前都会将之前的代码地址(也就是调用点)入栈,等被调用的函数执行完将地址出栈,程序根据这个数据返回调用点。
若递归调用次数太多,就会只入栈不出栈,于是堆栈就被压爆了,此为栈溢出。
其中概念性的东西可以百度
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
puqi09
2011-10-12
知道答主
回答量:23
采纳率:0%
帮助的人:9.3万
展开全部
递归函数调用的太深,需要太多的内存,递归里用到的局部变量存储在堆栈中,堆栈的访问效率高,速度快,但空间有限,递归太多变量需要一直入栈而不出栈,导致需要的内存空间大于堆栈的空间,栈空间是2M,堆空间内存空间。将逻辑关系理清楚,减少递归的次数应该能解决问题,像你这样递归深度比较大,不太适合用递归来解决问题,楼主可以考虑下其他的解决方案,即便是现在没问题,等到以后还是可能会出现问题的,防止隐患,楼主可以考虑放弃递归。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式