可能重复:
LINK : fatal error LNK1248: image size exceeds maximum allowable size (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)
我想知道如何更正我的计划。
答案 0 :(得分:7)
不要像这样创建大规模的数组。使用动态分配(即malloc
/ free
代替)。
答案 1 :(得分:2)
这是一个问题。 Windows将静态代码和数据限制为2GB,并且已超出此范围。即使在64位Windows上,无论您拥有多少内存,静态(不可分配)数据的2GB限制仍然存在。
解决方案是将数组从固定边界声明更改为可分配,然后使用ALLOCATE使它们达到所需的大小。如果您使用的是64位系统,则可以使用更大的阵列。但是如果你使用的是32位系统,则不能超过2GB。
您正在尝试分配太多静态内存,而系统无法为您提供这些内存。所以请将您的阵列尺寸缩小。它应该工作。
答案 2 :(得分:2)
结构的尺寸太大。您的操作系统将静态代码和数据限制为80000000(2 GB)
,并且您已在此处超出此范围。
在程序中使用malloc
动态分配,而不是在构建时执行此操作。