产生原因:由于系统分配给程序的栈空间太小,同时当程序静态数据量大时会产生栈溢出问题。
解决方法:
1.可以通过改变默认栈空间来解决
VC下设置:项目-> 属性-> 链接器-> system-> 堆栈保留大小/堆栈提交大小。
如: 把堆栈的大小已经设置为:
堆栈保留大小为:100000000;
堆栈提交大小为: 100000000;
但是栈开辟较大的值,会增加内存的开销和启动时间。
2.不要静态分配,尽量动态分配
用new,delete动态创建,这是从堆中分配的,堆的空间足够大。千万记得写析构函数delete申请的堆空间。养成“不在栈上定义大数组/大对象”的好习惯非常重要,因为再大的栈也会被撑爆。