正文
C语言函数栈过高 c函数栈空间的最大值
小程序:扫一扫查出行
【扫一扫了解最新限行尾号】
复制小程序
【扫一扫了解最新限行尾号】
复制小程序
C语言调用函数时,什么情况会出现栈溢出,栈溢出会出现什么结果
是不是调用函数的形参过多?一般来说,函数的参数都存在栈中,当然也可以申请堆。如果形参过多就会发生栈溢出,用递归的时候发生较多。栈溢出会发生段错误,也就是可能会占用系统的栈(好像不能访问)。。。
错了给我说……
C语言局部变量过多会不会造成栈区堆满?
答案是会的:
系统分配给每个程序的栈空间是有限的,超过了就会堆满。
最有代表性的就是递归函数,如果递归的深度达到一定量,程序栈就会满,程序就会异常退出,之前使用快速排序用到递归,当数据量比较大,数据基本有序时递归深度就比较大,程序就停止了,调试错误显示栈资源不足。
C语言程序栈堆的问题
你在栈中使用了过多空间(例如开辟了超大数组)。将占用过多空间的变量移到全局区或者使用malloc为其在堆中分配内存。