32位操作系統下4G以上內存應用程序的開發

小弟想在32位的WINDOWS XP或2003中做一個程序,這個程序要向系統申請10G左右的內存,但不知道怎麼做,誰能給點提示呢?

原來是老朋友,怪不得對我這麼瞭解。我現在確實懶了,想要做的事情做了個計劃,大概的算了一下時間,任務都排到2012年去了。

32位系統使用超過4GB的物理內存也是可以的,但是有一些限制:
1. 必須有那麼多內存安裝(廢話)
2. 操作系統要支持PAE(物理地址擴展)

就你的需要來說,XP、Win2003標準版是不可能的了,它們支持PAE也只限於4GB物理內存,至少要Win2003企業版,支持32GB以上內存。

有了操作系統的支持,32位應用程序只需要用AWE API就可以訪問更多的物理內存了,AllocateUserPhysicalPages、MapUserPhysicalPages、FreeUserPhysicalPages等等。
注意,用這種方法,分配了10GB內存,但是不能線性訪問的,要分次映射(MapUserPhysicalPages)到用戶的2GB地址空間中的一個小窗口,然後通過這個小窗口訪問,類似DOS程序使用EMS、XMS的方法。
個人建議對於這麼大的內存使用量,是否可以考慮使用內存磁盤(RamDisk),也許性能消耗會相對大一點,但是編碼會稍小很多,並且相對通用。

不能,樓主可以考慮用C++來寫一個能執行Lua、Javascript這類腳本語言的程序,用戶就用這些腳本語言寫解密算法,再壓縮~加密~保存成一個你自己認識的調用文件。
關於腳本語言的支持網上有很多,Lua用得比較多,Windows也自帶了ActiveX Scripting,還有FireFox的引擎SpiderMonkey和Chrome的V8引擎都是不錯的。
可不可以由用戶自己編譯一個dll呢?你定義好接口,用戶按照這個編譯秤dll文件,你在程序裏面loadlibrary調用

用戶可以定義DLL,我們一開始也是這樣想的,但軟件賣給用戶,就不是想裝我們軟件後還去裝C++builder編譯器,所以,前面這種方法被我們否定了。

樓的意思是你定義一個DLL的接口(例如規定DLL裏的導出函數名,該函數可以返回一個虛基類),由客戶來定製這個DLL(即由客戶編寫DLL,實現這個虛基類並返回給你的程序),就象很多帶插件的軟件一樣。

用腳本語言解釋,速度不會快吧
ASPEN PLUS等大型軟件中都有自己的編譯器,試試12樓的方法,這個比較可行。
我覺得好的方法是你發佈程序的時候,帶個bcc32的編譯器,用戶寫好代碼以後,用這個編譯器編譯一下,生成個dll

6樓:解析腳本,那不是跟編譯原理有關了,冒失很複雜。不是很懂。能不能說清楚。
8樓:用C#寫一個接口,然後用BCB調用,那樣是不是需要實現這個接口,然後讓主程序調用呀,這樣的話,還是用戶提供編譯了。

網關與計算機通過網絡交換機連接,網關有自己的系統自己的ip,現在想在未知網關ip的狀況下實現自動尋址。進而對網關進行操作。希望高手幫忙。
你要遠程操作網關??一個網絡裏面,網關也只是一個ip而已,你怎麼判斷他是網關還是主機,這個恐怕要研究一下你的網關了,看是不是有這個功能。瞎說的,這個實在是不瞭解。
你要找到網關,然後更改網關的地址?

樓主到底是什麼需求啊?怎麼感覺有點走偏了呢?

如果網關是一個服務器,可以在服務器上寫個廣播程序,發送類似“我是網關,我的ip是XXXX”這樣的廣播報,
如果是交換機或者路由器,那就不知道怎麼做了
我電腦配置的網關地址不是這個。其實我說的網關就是相當於一個小型的系統有自己的環境和ip。通過網絡交換機和我的機器相連,我只有把他設到我的網段纔可以與他通信,所以需要知道他現在的ip。
那你電腦配置的網關地址是不是這個?更改網關地址是更改你本機設定的網關地址還是你這個網絡中真正的網關地址??等待你的回答,也許我的辦法可以,呵~
來源:nba直播
發佈了39 篇原創文章 · 獲贊 0 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章