2017-11-30 8 views
-2

私は私が作るしようとすると、それは今C++のtypedef int型ARR [X] [Y]はSTACKDUMPエラーで失敗し

const int width=800, height=800;  
typedef int field[width][height]; 

のように定義されて、私は私が使用する必要があり、指定された型を持っていること、問題を抱えてこのタイプのインスタンスでは、例外を取得するだけです。私はそれをコンパイルしてリンクすると

const int width=800, height=800;  
    typedef int field[width][height]; 

    int main(){ 
     field f; 
    } 

、何もかも罰金が、私は

0 [unknown (0x25D0)] test 4660 cygwin_exception::open_stackdumpfile: Dumping stack trace to test.exe.stackdump 
を取得progrmaを実行するつもりですとき:それは簡単に保持するために

、プログラムはちょうどこのようになります。

+0

マクロ定数を使用して、const intではなく幅と高さを定義できます。 – LethalProgrammer

+3

CまたはC++を使用していますか?スタックトレースがどこにアクセスできるかを記述したエラーメッセージが表示されたが、トレース自体は表示されなかったのはなぜですか? – Useless

+5

この配列のサイズは2.44MBです。おそらくスタックには大きすぎます。 – mch

答えて

0

おそらく、プログラムのスタック領域が不足している可能性があります。

宣言をグローバルにするか(main()からグローバルスコープに移動する)、またはプログラムに割り当てられたスタック領域を増やす方法を調べてください。

+0

あるいは、スタックメモリの代わりにヒープメモリに配列を割り当てるために 'new'を使います。 –

+0

@RemyLebeau私は 'new'を使うのはお勧めできません。 'std :: vector >'のほうが適切です。 – oisyn

+0

それを管理する*安全な方法だと確信しています。フードの下で 'new'が使用されているという事実は変わりません。 –

関連する問題