递回调用造成堆栈溢出,溢出的意思就是越界,操作系统会给每个进程分配一个最大上限的堆栈空间,假如超过了这个内存空间大小程序就会coredump,就像你使用int *pi = new int[100000000];会崩溃一样,因为这里堆溢出了。操作系统分配给一个进程的栈空间是2M,堆空间在32位机器上是4G。
递回调用造成堆栈溢出,该如何解决?
溢出的意思就是越界,操作系统会给每个进程分配一个最大上限的堆栈空间,假如超过了这个内存空间大小程序就会coredump,就像你使用int *pi = new int[100000000];会崩溃一样,因为这里堆溢出了。
操作系统分配给一个进程的栈空间是2M,堆空间在32位机器上是4G。假如你的进程的栈空间使用超过了2M就会栈溢出,堆使用超过4G就会堆溢出。
0