文章目录 堆栈溢出 为什么栈向下生长,堆向上增长? 堆栈区别 堆栈溢出 栈溢出:创建进程时,会分配一个2M的栈空间,当递归函数调用过多时就会导致栈溢出 堆溢出:实际上与栈溢出同理(都是因为向一个固定大小的空间中,分配了过多的数据),因为操作系统给每个进程分配的最大堆的空间就是4G,当超出这个上限时就会发生堆溢出(比如说创建一个过大的数组) 如何解决递归函数引起的栈溢出? 使用尾递归,尾递归就是return时调用函数本身 T func(num_1,num_2){ if(num_1 == 2) return num_2;