Stack Overflow

产生原因:由于系统分配给程序的栈空间太小,同时当程序静态数据量大时会产生栈溢出问题。

解决方法:

1.可以通过改变默认栈空间来解决

    VC下设置:项目-> 属性-> 链接器-> system-> 堆栈保留大小/堆栈提交大小。

如: 把堆栈的大小已经设置为:

     堆栈保留大小为:100000000;

     堆栈提交大小为:   100000000;

   

    但是栈开辟较大的值,会增加内存的开销和启动时间。

2.不要静态分配,尽量动态分配

   用new,delete动态创建,这是从堆中分配的,堆的空间足够大。千万记得写析构函数delete申请的堆空间。养成“不在栈上定义大数组/大对象”的好习惯非常重要,因为再大的栈也会被撑爆。


posted @ 2011-03-30 10:40  Chjun  阅读(1060)  评论(0编辑  收藏  举报