1

このエラーが発生します

エラー

Microsoft Visual C ++ 2010 Expressでコンパイルされたコードに、以下よりも大きい数値を入力するたびに、次のようになります。

int size = 276447232;

しかし、この 会話これ、またはあれ によれば問題が発生する前に、2147483646まで上がることができるはずです。

4

1 に答える 1

1

プログラムが割り当てようとしているスタックスペースが多すぎます。

char *outputGwb = char[size]; // array is created "on the stack"

ヒープmallocからメモリを割り当てるには(またはnewC ++で)使用します。後で必ず(またはC ++で)メモリを使用してください。割り当て/割り当て解除戦略を混在させないでください。freedelete

char* outputGwb = new char[size]; // C++: note use of the "new" keyword
char* outputGwb = malloc(size);   // C:   note no cast needed in a C compiler

したがって、この問題は特定のリソースの最大サイズに関するものであり、整数値が表すことができる最大数とは関係ありません。

スタックとヒープはどこにありますか?を参照してください。2つのメモリ割り当て領域間の説明。さらに、必ずしもお勧めするわけではありませんが、VisualC++でスタックサイズを変更する方法について説明しているスレッドを次に示します

于 2012-08-21T20:39:20.467 に答える