C++中由数组大小引起的栈溢出
在写C++程序中最怕的一问题应是,程序在debug下可以正确无误的运行而在release模式下却发生内存访问的错误。最近就遇到了一个因数组引起的栈溢出问题,费了好长时间才发现。
用VS2005写程序,默认的栈大小是1M。我们在程序中的变量及静态数组都是储存在栈中的。一旦变量和静态数组的规模超过了栈的大小,就会发生栈溢出错误。如运行如下一段代码是无法成功的:
#pragma once
#include <iostream>
using namespace std;
int main()
{
int a[1024*256];
cerr<<"It works"<<endl;
return 0;
}
静态数组a的大小为:1024*256*4字节 > 1M字节,因此程序无法正常运行。在项目->属性->链接->系统中增大栈大小后,可以正常运行上面这个程序。
原创文章,转载请注明: 转载自点滴成河