配列を作成しようとしています:
int HR[32487834];
これは約 128 - 130 メガバイトのメモリしか占有しませんか? MS c++ Visual Studios 2005 SP1 を使用していますが、クラッシュし、スタック オーバーフローが通知されます。
3 に答える
11
ベクトルを使用 - 配列データはヒープ上に配置されますが、関数またはブロックを離れると、配列は自動的にクリーンアップされます。
std::vector<int> HR( 32487834);
于 2009-08-01T19:03:03.050 に答える
7
あなたのコンピュータにはギガバイトのメモリがあるかもしれませんが、スタックにはありません (デフォルトでは、Windows では ~1 MB だと思いますが、それを大きくすることができます)。
でヒープに割り当ててみてくださいnew []
。
于 2009-08-01T18:41:09.740 に答える
3
デフォルトでは、スタックはそれほど大きくありません。/F コンパイラ スイッチでスタック サイズを設定できます。
このオプションを指定しない場合、スタック サイズはデフォルトで 1 MB になります。number 引数は、10 進数または C 言語表記にすることができます。引数の範囲は、1 からリンカーが受け入れる最大スタック サイズまでです。リンカーは、指定された値を最も近い 4 バイトに切り上げます。/F と数値の間のスペースはオプションです。
実行可能ファイルに/STACK リンカー オプションを使用することもできます
しかし、すべてを一度に行うのではなく、問題をいくつかの部分に分割する必要があります。一度にすべてのメモリが本当に必要ですか?
通常、スタックよりもヒープに多くのメモリを割り当てることもできます。
于 2009-08-01T18:44:54.740 に答える