1

我有一个关于每当我执行我的 C++ 代码时显示的错误消息的问题,错误消息如下:

Exception non gérée à 0x00839057 dans FirstReport1.exe : 0xC00000FD: Stack overflow.

1)这是什么意思?2)我怎样才能避免它并正常执行我的代码?我正在执行的代码如下:

#include <iostream>
#include <fstream>
#include <ctime>
#include <iomanip>

using namespace std;

const int width(10001);
const int height(15);

void main()
{
    ifstream inputfile ("file6.txt");
    ofstream outputfile ("outfile.txt");
    ofstream filteredfile ("filteredfile.txt");
    ofstream timefile ("time.txt");
clock_t tstart, tend;
tstart = clock();

int i, x, y;
double tab[height][width];

for (y=0; y<height; y++){
    for (x=0; x<width; x++){
        tab[y][x]=0;
    }
}

if (inputfile){
    for (y=0; y<height; y++){
        for (x=0; x<width; x++){ 
            inputfile >> tab[y][x];
        }
    }
}

if (filteredfile){
    for (y=0; y<height-1; y++){
        for (x=0; x<width-1; x++){
            if (tab[y+1][x+1]==-9999 || tab[y+1][x+1]<20 || tab[y+1]

[x+1]>1200) {tab[y+1][x+1]= 0;}
                filteredfile << tab[y][x] << '\t';
            }
        }
    }
tend = clock();
    double time;
    time = double (tend-tstart)/CLOCKS_PER_SEC;
    timefile << time;
}
4

1 回答 1

1

您正在堆栈上创建一个数组“选项卡”,其中包含 10001x15 个元素。每个元素都是一个双精度数,大小为 8 个字节。因此数组为 1,200,120 字节,可能大于默认堆栈大小。我记得这是 Visual c++ 中的 1MB。

要么把这个数组放在堆栈以外的地方,要么增加你的堆栈大小。

于 2012-04-16T08:14:23.083 回答