Win32的虛擬記憶體分配函式

2021-04-01 01:42:41 字數 939 閱讀 8915

win32的虛擬記憶體分配函式

虛擬記憶體api是其他api的基礎。虛擬記憶體api以頁為最小分配單位,x86上頁長度為4kb,可以用getsysteminfo函式提取頁長度。虛擬記憶體分配函式包括以下函式:

dword cbsize,

dword fdwallocationtype,

dword fdwprotect);

該函式用來分配一定範圍的虛擬頁。引數1指定起始位址;引數2指定分配記憶體的長度;引數3指定分配方式,取值mem_***mint或者mem_reserve;引數4指定控制訪問本次分配的記憶體的標識,取值為page_readonly、page_readwrite或者page_noaccess。

lpvoid lpvaddress,

dword cbsize,

dword fdwallocationtype,

dword fdwprotect);

該函式功能類似於virtualalloc,但是允許指定程序process。virtaulfree、virtualprotect、virtualquery都有對應的擴充套件函式。

dword dwsize,

dword dwfreetype);

該函式用來**或者釋放分配的虛擬記憶體。引數1指定希望**或者釋放記憶體的基位址;如果是**,引數2可以指向虛擬位址範圍內的任何地方,如果是釋放,引數2必須是virtualalloc返回的位址;引數3指定是否釋放或者**記憶體,取值為mem_de***mint或者mem_release。

dword cbsize,

dword fdwnewprotect,

pdword pfdwoldprotect);

該函式用來把已經分配的頁改變成保護頁。引數1指定分配頁的基位址;引數2指定保護頁的長度;引數3指定頁的保護屬性,取值page_read、page_write、page_readwrite等等;引數4用來返回原來的保護屬性。

windows虛擬記憶體(win32)

windows是乙個以虛擬記憶體為基礎的作業系統。在這種系統環境下,windows記憶體管理器經常在記憶體中來回移動物件,依此來 滿足各種應用程式的記憶體需要。物件被移動意味著它的位址變化了。如果位址總是如此變化,我們該到 去找物件呢?為了解決這個問題,windows作業系統為各應用程式騰出一些記憶...

3 2 虛擬記憶體管理

3.2.1 虛擬記憶體的基本概念 1 傳統儲存管理方式的特徵 各種記憶體管理策略都是為了同時將多個程序保證在記憶體中以便允許多道程式設計。它們都具有以下兩個共同的特徵 1 一次性 作業必須一次性全部裝入記憶體後,方能開始執行。這會導致兩種情況發生 當作業很大,不能全部被裝入記憶體時,將使該作業無法執...

記憶體分配 記憶體分段 記憶體分頁 虛擬記憶體

記憶體應容納作業系統和各種使用者程序,因此應該盡可能有效地分配記憶體。通常,我們需要將多個程序同時放在記憶體中。因此我們需要考慮,如何為輸入佇列中需要調入記憶體的程序分配記憶體空間。在採用連續記憶體分配時,每個程序位於乙個連續的記憶體區域,與包含下乙個程序的記憶體相連。1.最為簡單的記憶體分配方法之...