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 将静态代码和数据限制为 2GB,而您已经超过了这个。即使在 64 位 Windows 上,无论您有多少内存,静态(不可分配)数据的 2GB 限制仍然存在。

解决方案是将数组从以固定边界声明为可分配,然后使用 ALLOCATE 使它们成为所需的大小。如果您在 64 位系统上,这将允许您拥有更大的阵列。但如果您使用的是 32 位系统,则不能超过 2GB。

您正在尝试分配系统无法为您提供的过多静态内存。所以请让你的数组大小更小。它应该工作。

于 2013-01-29T14:15:01.893 回答
2

结构尺寸过大。您的操作系统将静态代码和数据限制为80000000(2 GB),而您在此处已超出此范围。

在您的程序中动态分配 usingmalloc而不是在构建时执行此操作。

于 2013-01-29T14:15:46.923 回答