我们假设一个程序是,你要吃完一个西瓜,吃完了程序就执行完了。
情况1:吃西瓜有条件:西瓜吃到一半时必须吃个苹果,苹果吃到一半时必须吃个梨。可是你的胃不够大(栈不够大)于是刚吃了办个苹果就撑爆了,就爆栈了。
情况2:吃西瓜有条件:西瓜吃到一半时必须吃个苹果,苹果吃到一半时必须吃个梨,梨吃到一半必须吃个苹果。可见吃梨和吃苹果之间形成无限循环了,肚子一直装东西最后肯定得撑爆了,就爆栈了。
总结:程序执行过程中由于各个流程间反复调用或无限循环地相互调用或调用时占用了太多资源,导致栈的空间不够使用了,其后引发的程序无法正常执行完毕的现象称为爆栈。
局部变量定义过大或者递归次数过多 都可能出现爆栈。
如果是前者, 那么可以改成static 或者定义为全局变量。
如果是后者 那就需要优化算法了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)