VS中出现Stack overflow的问题

来源:互联网 发布:阿里巴巴比淘宝便宜 编辑:程序博客网 时间:2024/05/16 03:24

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

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

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

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

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

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

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

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

原创粉丝点击