C++中由数组大小引起的栈溢出

来源:互联网 发布:linux宕机日志在哪里 编辑:程序博客网 时间:2024/06/06 00:45

转自http://www.cnblogs.com/north_dragon/archive/2011/07/02/2096363.html

 在写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字节,因此程序无法正常运行。在项目->属性->链接->系统中增大栈大小后,可以正常运行上面这个程序。

原创粉丝点击