作者vintw (陽光好青年)
看板C_and_CPP
標題Re: [問題] 可用記憶體上限??
時間Thu May 7 15:21:11 2009
**注意**
有板友向我反應改完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)