1

重複の可能性:
リンク: 致命的なエラー LNK1248: 画像サイズが最大許容サイズ (80000000) を超えています

#define no_cust 4000
#define no_plant 50  
#define no_sup 2000  
#define No_population 100
#define Iteration 3

struct Output2{
    long double RandomZhj[No_population];
    double Population[No_population];   
    long double result;
    long double cost_sup_to_plant;
    long double velocity[No_population];        
}Zhj[no_sup][no_plant],Whj[no_sup][no_plant],Vhj_t1[no_sup][no_plant];

プログラムを実行すると、次のように表示されます。

致命的なエラー LNK1248: イメージ サイズ (818D4000) が最大許容サイズ (80000000) を超えています

プログラムを修正する方法を知りたいです。

4

3 に答える 3

7

そのような大規模な配列を作成しないでください。動的割り当てを使用します (代わりにmalloc/など)。free

于 2013-01-29T14:14:47.600 に答える
2

問題です。Windows は静的コードとデータを 2 GB に制限しており、これを超えています。64 ビット Windows でも、メモリの量に関係なく、静的 (割り当て不可) データの 2 GB の制限は残ります。

解決策は、配列を固定境界で宣言することから割り当て可能に変更し、次に ALLOCATE を使用して目的のサイズにすることです。64 ビット システムを使用している場合、これにより、より大きな配列を使用できます。ただし、32 ビット システムを使用している場合は、2GB を超えることはできません。

システムが提供できない静的メモリを割り当てようとしています。したがって、配列のサイズを小さくしてください。それはうまくいくはずです。

于 2013-01-29T14:15:01.893 に答える
2

構造体のサイズが大きすぎます。お使いの OS は静的コードとデータを に制限して80000000(2 GB)おり、ここではこれを超えています。

mallocビルド時にこれを行うのではなく、プログラムで使用して動的に割り当てます。

于 2013-01-29T14:15:46.923 に答える