windows提供一下三種機制來對內存進行操控:
虛擬內存:最適合用來管理大型對象數組或大型結構數組
內存映射文件: 最適合用來管理大型數據流,以及在同一機器上多個進程共享數據(17章)
堆:最適合用來管理大量的小型對象
windows提供了一些用來操控虛擬內存的函數,我們可以通過這些函數直接預定地址空間區域,給區域調撥(來自頁交換文件的 )物理存儲器。以及根據自己的需要來設置頁面的保護屬性。
1. 預訂地址空間區域
virtualalloc 地址傳入null,等於告訴系統自動找一塊閒置區域但是不保證從上到下分配或從下到上分配
如果打算預訂一塊區域並且用很長時間,那麼我們希望系統從儘可能高的內存分配地址,避免引起內存碎片
2. 給區域調撥物理存儲器
系統會從頁交換文件中調撥物理存儲器給區域
用MEM_COMMIT替換MEM_RESERVE
3. 取或則同時預定和調撥
4. 何時調撥物理存儲器
虛擬內存,既能方便享受數組方法所帶來的快速,又能節省存儲器,就像使用鏈表一樣
(1)預定足夠大的空間,只預定不調撥不會消耗物理存儲器
(2) 確定..結構在區域中的內存地址
(3)給(2)的內存地址調撥足夠的物理存儲器
(4)設置..結構成員
5. 撤銷調撥物理存儲器及釋放
6.改變保護屬性
7.重置物理存儲器的內容
8. 地址窗口擴展
關於內存機制,參考:http://blog.csdn.net/vsooda/article/details/8986135