请问爆栈什么意思?

请问爆栈什么意思?,第1张

足够通俗的来讲,假设你吃东西,胃的空间是有限的,栈就是系统给程序分配的一块空间。

我们假设一个程序是,你要吃完一个西瓜,吃完了程序就执行完了。

情况1:吃西瓜有条件:西瓜吃到一半时必须吃个苹果,苹果吃到一半时必须吃个梨。可是你的胃不够大(栈不够大)于是刚吃了办个苹果就撑爆了,就爆栈了。

情况2:吃西瓜有条件:西瓜吃到一半时必须吃个苹果,苹果吃到一半时必须吃个梨,梨吃到一半必须吃个苹果。可见吃梨和吃苹果之间形成无限循环了,肚子一直装东西最后肯定得撑爆了,就爆栈了。

总结:程序执行过程中由于各个流程间反复调用或无限循环地相互调用或调用时占用了太多资源,导致栈的空间不够使用了,其后引发的程序无法正常执行完毕的现象称为爆栈。

局部变量定义过大

或者递归次数过多 都可能出现爆栈。

如果是前者, 那么可以改成static 或者定义为全局变量。

如果是后者 那就需要优化算法了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11501977.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存