ana*_*and 1 language-agnostic recursion operating-system
有一个函数可以无限地递归调用自身.
这个函数也有一些参数.
对于每个函数调用,参数和返回地址都被压入堆栈.
对于每个进程,都有固定大小的堆栈空间,不能像堆一样动态增长.我猜每个线程也有自己的堆栈.
现在,如果一个函数被无限地递归调用并且进程耗尽堆栈空间,会发生什么?
程序会崩溃吗?OS会处理这种情况吗?有4GB的地址空间,为什么操作系统无法做些什么来增加堆栈大小.
var*_*tec 6
堆栈溢出.
在UNIX和兼容过程中,进程将终止抛出SIGSEGV或SIGSTKFLT信号.
SIGSEGV
SIGSTKFLT
在Windows中,进程将终止抛出异常STATUS_STACK_OVERFLOW.
STATUS_STACK_OVERFLOW
归档时间:
16 年,10 月 前
查看次数:
2890 次
最近记录: