Windows XP的程式使用大於2GB的記憶體

由於使用BCB開發C++大型圖檔的處理程式時,只要配置到2GB以上的記憶體後,就會產生bad_alloc的例外,

導致無法用BCB處理超大型圖檔。但是,在大學課程中所說的是:32位元的程式能夠使用最多4GB的記憶體,

為何現在只能用2GB? 


原來是因為Windows XP與較舊的系統,為了確保OS能夠維持系統運作,將單一程序的記憶體使用量限制在2GB,

如果需要使用大於2GB,就會需要關閉Windows XP的限制。

解除限制的方法分為兩個步驟

1. 設定OS的開機選項中boot.ini的參數

在「我的電腦」右鍵「內容」→切換成「進階」頁面→由上往下第三個「設定」→「編輯」→加入 /3GB的設定

2. 用工具程式對程式進行微調

利用Visual Studio 2008 所提供的工具Editbin做編輯(Express版也有提供)

開啟Visual Studio 2008的命令提示字元鍵入

editbin.exe /LARGEADDRESSAWARE "你的程式路徑"

如此一來,就能夠開始充分利用3GB(for win xp)/4GB(for win 7 64bit)的程式空間


附註: 這個小工具可以很方便的完成第二個步驟的工作。


參考資料

如何使用 4GT RAM 微調功能

關於Win2K Advance Server 中 boot.ini的/PAE /3GB 設定問題

MSDN:Memory Limits for Windows Releases

How to make Windows XP Pro give more than 2GB of memory to Poser 6

Windows XP 和 Windows Server 2003 Boot.ini 檔可用的參數選項

留言