看板 C_and_CPP 關於我們 聯絡資訊
**注意** 有板友向我反應改完boot.ini後重新開機,會出現無法進入Windows的狀況; 雖然我自己,和其他一樣這麼設定的同儕沒有遇到過,在此還是提醒大家這種風險。 在32bit Windows裡面,每一個processs可以直接存取的虛擬記憶體限制是2GB, 剩下的2GB則是分給核心記憶體使用,程式無法直接存取。 如果在程式中要求了超過2GB的記憶體,就會直接出現錯誤強制程式關閉。 就算你的電腦上面有4GB的記憶體,每一個process還是只能用到2GB。 以下方法可以把程式中可以直接存取記憶體的上限提高到3GB, 但是如果你有開啟PAE的話,總共可用的記憶體會被限制在16GB。 1.在boot.ini中加入/3GB 參數 boot.ini裡面大概長的像這樣... multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /3GB /noexecute=optin /fastdetect /usepmtimer 加完要重新啟動才會生效。 2.在Linker中加上LARGE ADDRESS AWARE參數 如果是VC系列的話,是/LARGEADDRESSAWARE 如果是gcc的話,是--large-address-aware 然後重建整個程式,應該就可以用超過2GB的記憶體了。 參考資料: http://www.microsoft.com/whdc/system/platform/server/PAE/PAEmem.mspx http://www.microsoft.com/taiwan/whdc/system/platform/server/pae/paedrv.mspx 不太確定有沒有遺漏的部分,如有誤還望各位先進不吝指教。 ※ 引述《kulaice (我有勇氣去?嗎)》之銘言: : 請問各種C程式可以的記憶體上限可以超過2GB嗎 : 因為我寫的需要使用到很大的記憶體,偏偏差不多2GB就當了 : 上網查了是應用程式只能用2GB??不確定 : 因為我估購查到在boot.ini檔加/3GB參數說可以用到3GB : 但再執行一樣2G就當了(還是說需要再設定哪??) : 我的記憶體共有3GB,所以應該要吃完才當,但還有剩就當了... : 所以請問各位可以用超過2GB的記憶體嗎 : 以XP 32bit討論... : 各位使用的C程式軟體 : 有無特別設定??如何設定@@ : 感謝m(_ _)m -- Sincerely. --VinTW -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.121.197.174 ※ 編輯: vintw 來自: 140.121.197.174 (05/07 15:22)
WPC001:PAE不是給單一程式用的...Win32底下,大型記憶體模式就是3GB 05/07 17:09
kulaice:感謝,不過我設了再跑還是一樣...可能我用的程式問題 05/07 20:05
typeotoco:要用API去控制吧.. 05/07 20:09
kulaice:抱歉,沒做到重建。現在可以吃超過2g了,謝謝你提供的方法 05/07 22:58
修一些TYPO ※ 編輯: vintw 來自: 211.74.14.152 (05/08 00:54) ※ 編輯: vintw 來自: 114.45.58.160 (03/02 01:16)