2013-07-03 65 views
2

我在具有12 GB RAM的Windows OS上運行大量內存密集型作業。通過我的計算,4GB的內存應該足以運行該程序。我正在使用CodeBlocks運行我用動態內存分配(我有C和C++中的程序的兩個版本,分別爲malloc/free和new/delete)編寫的程序。由C/C++程序使用的增加(非堆棧)內存

當我拉起任務管理器時,我發現程序似乎只使用大約2GB的Ram,即使我有更多的可用空間,並且頁面文件大小目前設置爲30gb。有沒有什麼辦法可以讓ciode塊使用更多的內存?我還使用了DEV-C++,並在C++代碼中得到了相同的bad_alloc錯誤。

任何想法?提前致謝。 哦,我正在使用一個64位的Windows操作系統7.

+0

我假設你使用的是32位版本的Windows,在這種情況下答案是否定的。如果您使用的是64位版本的Windows,則可以構建一個可以訪問所有系統內存的64位二進制文​​件。 –

+0

我正在使用一個64位的Windows操作系統7. – user1775614

+0

聽起來像你正在編譯一個32位目標。你正在使用哪個編譯器? –

回答

0

感謝所有幫助迄今爲止。有一個簡單的解決方法。我安裝了mingw 64位編譯器,將代碼塊指向該編譯器,並且所有工作都像魅力一樣。好極了。

2

看看這個頁面的內存限制基於體系結構(x86,64位)和Windows版本。一些變通提到:
http://msdn.microsoft.com/en-us/library/aa366778(v=vs.85).aspx#memory_limits

首先,您必須確保您正在構建一個64位可執行文件,而不是32位。
如果使用g ++,請確保使用選項-m64


至於在MSDN頁提到的大地址意識,應該在默認情況下在64位的Windows系統被激活。 儘管如此,在Visual C++連接器有一個選項,因爲它明確要求:/LARGEADDRESSAWARE

現在,如果你不使用Visual C++鏈接,看來如果你想激活大,你可以隨時使用這個作爲一個額外的步驟應對意識,爲您的可執行文件:

editbin /LARGEADDRESSAWARE your_executable 

(EDITBIN作爲一個M $的Visual Studio工具)

+0

dev-C++/code-block的解決方法可能是使用ms的ld.exe。 http://forums.codeblocks.org/index.php?topic=12183.45 –

+0

哦,對不起,我讀得太快了。看起來像你可以使用editbin(http://msdn.microsoft.com/en-us/library/xd3shwhf%28v=vs.80%29.aspx)允許更多的內存到編譯的二進制文件。 –

+0

看起來像我必須下載editbin.exe - 這看起來像一個很好的地方下載它? http://originaldll.com/file/editbin.exe/39047.html – user1775614