Microsoft Visual Studio-2005 コンパイラを使用して C コードを作成しているときに、1 つの問題に直面しました。
大きなバッファを次のように静的に宣言しようとしました:
int gbl_data[4096*4096*256];
編集: この宣言は、ヘッダー ファイル内のグローバル変数でした。
「<strong>定数サイズ 0 の配列を割り当てることはできません」というコンパイル エラーが発生していました。
どういうわけか、4096X4096X256 のサイズが MAX_INT_LIMIT サイズ (2^31) よりも大きくなりすぎて、ラップアラウンドして –ve 程度になる可能性があることを意味します。しかし、それは「負の添え字」としてエラーを与えるべきでした。
定数を 4096UL x 4096UL x 256UL としてキャストしようとしましたが、それでも同じコンパイル エラーです。
このエラーの原因は何ですか?
この大きなサイズのバッファを割り当てるには、物理メモリのサイズが不足しているためですか、それとも何ですか?
それに対する修正は何ですか?
ありがとうございます。
-GM。