我试图分配一个非常大的多维浮点数组,但是当超出某些维度时,会发生内存异常问题。多维浮法阵列分配崩溃
//Doesn't crash
float[,] newArr = new float[40000, 5000];
//Crashes
float[,] newArr1 = new float[45000, 5000];
//Doesn't crash
float[,] newArr2 = new float[40000000, 5];
//Crashes
float[,] newArr3 = new float[45000000, 5];
我不知道是什么问题,我所知道的2GB的数组大小限制和4个十亿元素,但这些都不能任意限制。另外,我不能使用另一个数据结构,因为我需要将[,]传递给外部API调用。任何人都知道这里可能会发生什么? 谢谢!
它发生在我的32位应用程序@ .NET 4.5.1,Windows 7,8 GB RAM上。 – DDushaj
45000 x 5000 x 4〜= 900兆字节。你不会在32位的过程中获得这个功能,可用地址空间中的最大漏洞在启动时徘徊在约650兆字节,并且在程序运行一段时间后会迅速下降。只需删除抖动强制,以便您的程序可以作为64位进程运行。右键单击您的EXE项目>属性>编译选项卡。在8 TB的地址空间中有很多非常大的漏洞。 –
@HansPassant会喜欢把这个标记为答案,如果你不介意把它放在一个:) – DDushaj