大きな2次元配列を必要とする小さなC++プログラムがある。エラー:配列の合計サイズは、0x7fffffffバイトを超えてはならない。
int distanceArray[282][9900000];
標準の32ビットコンソールアプリケーションでは、32ビットアプリケーションで2GBの上限があるため、この大量のメモリをプロセスに割り当てることができません。私は自分のアプリケーションを構築しようとすると、しかし、私はネイティブAMD64ツールセットを使用するように私のコンパイラを設定しているという事実にもかかわらず、私はまだ同じエラーを取得:
Error C2148 total size of array must not exceed 0x7fffffff bytes
は、私は私のシステム上のRAMの16ギガバイトを持っているので、I私の身体的記憶は問題ではないはずです。私の計算が正しければ、これは約3GBしか使いません。しかし、なぜ私は64ビットコンパイラが正しく動作するように見えないのか分かりません。私はどのように64ビットコンパイラを使用するかを概説したMicrosoft's websiteの指示に従ったが、私が何をするにしても、私は同じエラーを受け取る。どんな助けでも大歓迎です。ありがとうございました!
私はこの質問が以前に尋ねられていることを知っていますが、既存の回答は私には役に立たなかった。私の問題を見つけるのを手伝ってくれてありがとう、ありがとう。
おそらくスタックがオーバーフローしています。それはプロセスの利用可能なメモリの合計と同じではありません。 'std :: vector>'などを代わりに使用してください。 –
それは通常、実行時にエラーを引き起こすことはありませんか?私はこれを正しくコンパイルすることさえできません。 –
これはコンパイラ特有のものです。私は[ここ](http://coliru.stacked-crooked.com/a/4bfd4b70ce80f332)を再現することはできません。おそらく、特定の開発環境に関するタグと説明を追加するべきでしょう。 –