1. 程式人生 > >Windows API一日一練(77)VirtualAlloc函式

Windows API一日一練(77)VirtualAlloc函式

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow

也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!

                上一次學習了全域性記憶體的分配,在 Windows 裡記憶體管理是分為兩部份,全域性記憶體是系統管理的記憶體,因而所有程序都可以訪問的記憶體,而每一個程序又有自己的記憶體空間,這就是虛擬記憶體空間了,而虛擬記憶體的空間比較大,當實體記憶體不足時,系統會把虛擬記憶體的資料儲存到硬盤裡,這樣只要硬碟的空間足夠大,每個程序就可以使用
3G 的記憶體。虛擬記憶體分配可以作為程式裡分配記憶體的主要方式,比如大量的資料緩衝區,動態分配記憶體的空間。使用 VirtualAlloc 函式來分配記憶體的速度要比全域性記憶體要快。   函式 VirtualAlloc 宣告如下:   WINBASEAPI __bcount(dwSize) LPVOID WINAPI VirtualAlloc(     __in_opt LPVOID lpAddress,
    __in     SIZE_T dwSize,     __in     DWORD flAllocationType,     __in     DWORD flProtect     ); lpAddress 是指定記憶體開始的地址。 dwSize
是分配記憶體的大小。 flAllocationType 是分配記憶體的型別。 flProtect 是訪問這塊分配記憶體的許可權。   呼叫函式的例子如下: #001 // #002  // 分配虛擬記憶體的分配。 #003  // 蔡軍生  2007/11/20 QQ:9073204 深圳 #004  void MemVirtual(void) #005  { #006         // #007         // 分配新記憶體大小。 #008         UINT nNewSize = (UINT) ceil(1500 / 1024.0) * 1024; #009        PBYTE pNewBuffer = (PBYTE) VirtualAlloc(NULL,nNewSize,MEM_COMMIT,PAGE_READWRITE); #010         if (pNewBuffer) #011         { #012               // 測試虛擬記憶體。 #013               ZeroMemory(pNewBuffer,1500); #014               memcpy(pNewBuffer,_T(" 分配虛擬記憶體成功 /r/n"), #015                    sizeof(_T(" 分配虛擬記憶體成功 /r/n"))); #016               OutputDebugString((LPWSTR)pNewBuffer); #017  #018               // 刪除分配的記憶體。 #019               VirtualFree(pNewBuffer,0,MEM_RELEASE); #020         } #021  #022  }                 

給我老師的人工智慧教程打call!http://blog.csdn.net/jiangjunshow

這裡寫圖片描述