当前位置:  开发笔记 > 开发工具 > 正文

如果函数在无限递归期间超出堆栈空间会发生什么?

如何解决《如果函数在无限递归期间超出堆栈空间会发生什么?》经验,为你挑选了1个好方法。

有一个函数可以无限地递归调用自身.

这个函数也有一些参数.

对于每个函数调用,参数和返回地址都被压入堆栈.

对于每个进程,都有固定大小的堆栈空间,不能像堆一样动态增长.我猜每个线程也有自己的堆栈.

现在,如果一个函数被无限地递归调用并且进程耗尽堆栈空间,会发生什么?

程序会崩溃吗?OS会处理这种情况吗?有4GB的地址空间,为什么操作系统无法做些什么来增加堆栈大小.



1> vartec..:

堆栈溢出.

在UNIX和兼容过程中,进程将终止抛出SIGSEGVSIGSTKFLT信号.

在Windows中,进程将终止抛出异常STATUS_STACK_OVERFLOW.

推荐阅读
php
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有