VS中出现Stack overflow的问题

  今天使用C语言编程时,在主函数里定义了一个较大的二维数组,显示:stack overflow的错误,然后在网上搜索了一下,网上说函数内部的变量都定义在栈里,栈的大小根据编译器有所不同,一般是1M,可以在VS中这样设置:项目属性-链接器-系统-堆栈保留大小,人为设置大小,我尝试了一下,还是会报错。后来将那个二维数组定义为全局变量就可以了,网上给出的解释是:局部变量在栈中,随着函数的调用而失效,全局变量在程序专有区域(静态存储区),在整个程序生存周期都有效。

  顺便再总结一下导致堆栈溢出的一些常见原因:

1.内存泄漏,某一数组原先已定义好大小,但在后续操作中存放的个数超过这一长度,会导致堆栈溢出

2.程序员申请的动态内存使用后未及时释放,导致内存区不够用,也会导致堆栈溢出

3.程序陷入无限循环,不断消耗内存空间

4.系统实际内存空间不足

5.循环的递归调用,频繁压栈出栈

6.由于局部变量存储在栈中,过大的局部变量也会导致堆栈溢出。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值