当前位置:首页>维修大全>综合>

递归调用造成堆栈溢出 该如何解决

递归调用造成堆栈溢出 该如何解决

更新时间:2023-09-17 18:59:22

递归调用造成堆栈溢出 该如何解决

溢出的意思就是越界,操作系统会给每个进程分配一个最大上限的堆栈空间,如果超过了这个内存空间大小程序就会coredump,就像你使用int *pi = new int[100000000];会崩溃一样,因为这里堆溢出了。

操作系统分配给一个进程的栈空间是2M,堆空间在32位机器上是4G。如果你的进程的栈空间使用超过了2M就会栈溢出,堆使用超过4G就会堆溢出。

那么递归为什么会导致栈溢出呢?相信楼主知道栈的出入规则,先入后出,递归的话那么先入的一致不能出栈,会一致存在栈空间中,这样就容易导致栈满而溢出。

哈哈,还有不懂不?

更多栏目