我在做一些非常大的數組處理。我做的一個全球性的聲明:LINK:致命錯誤LNK1248:圖像大小超過最大允許大小(80000000)
`float array[200][1600][811];`
當我建立我在微軟的Visual Studio 2010的解決方案,我收到以下錯誤
LINK : fatal error LNK1248: image size (F85C8000) exceeds maximum allowable size (80000000)
現在,我知道這相當於約1 GB的程序存儲器。但是這個聲明適用於float [50][1600][811]
的聲明,這相當於250MB。我知道默認的堆棧大小非常有限。 有幾件事我已經嘗試過了。我通過屬性 - >鏈接器 - >堆棧保留大小增加了VS中的堆棧大小。這沒有幫助。我改變了我的可執行文件在x64模式下運行(據說這可以解決高達2GB的內存!)。這也沒有幫助。
我不想在數組上做malloc
,因爲我知道我確實需要他們在我的代碼中。我不得不讓它們成爲全局聲明,以便我可以利用堆棧/堆內存。如果我在Main()
之內聲明它們,它會給我內存溢出的錯誤。
任何指針將不勝感激。 謝謝。
你不應該(也不能)把它放在堆棧上。別嘗試。出於所有實際目的,堆分配對於這種大小的東西是不可避免的。 – Mysticial
現在是時候瞭解堆內存分配的全部內容。或者,這裏有'x64'平臺讓你感覺舒服一段時間。 –
首先要問的是,你是否需要首先使用數組。如果大多數值仍然設置爲默認值,或者您可以按照不需要同時存儲在內存中的順序處理它們,則不會發生這種情況。 – reinierpost