我試圖分配一個非常大的多維浮點數組,但是當超出某些維度時,會發生內存異常問題。多維浮法陣列分配崩潰
//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