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 の要素を持つ配列「タブ」を作成しています。各要素は double で、サイズは 8 バイトです。したがって、配列は 1,200,120 バイトであり、デフォルトのスタック サイズよりも大きい場合があります。これは Visual c++ で 1MB だったことを思い出します。

この配列をスタック以外の場所に置くか、スタック サイズを増やしてください。

于 2012-04-16T08:14:23.083 に答える