複製鏈接
請複製以下鏈接發送給好友

HeapFree

鎖定
HeapFree是一個Windows API函數。它用來釋放堆內存 [1] 
外文名
HeapFree
釋    義
Windows API函數
作    用
釋放堆內存
平    台
Windows

目錄

HeapFree語法

BOOL HeapFree(
HANDLE hHeap,
DWORD dwFlags,
LPVOID lpMem
); [1] 

HeapFree參數

hHeap
堆內存塊釋放。這個參數是HeapCreate或GetProcessHeap函數返回的句柄。 [1] 
dwFlags
指定幾個可控釋放的內存塊。指定以下值將覆蓋flOptions中指定參數對應的值,當堆是由使用HeapCreate函數。 [1] 
意思
HEAP_NO_SERIALIZE
串行存取將不會被使用。
為了確保序列化訪問,所有調用這個函數將被禁用,在調用HeapCreate指定HEAP_NO_SERIALIZE。在這種情況下,沒有必要在此函數調用另外指定HEAP_NO_SERIALIZE。
訪問進程堆時沒有指定此值。該系統可以創建應用程序的過程中額外的線程,如CTRL + C處理程序,同時訪問進程堆。
lpMem
被釋放的內存塊的指針。這HeapAlloc或HeapReAlloc函數返回的指針。如果這個指針為NULL,則為空。 [1] 

HeapFree返回值

如果函數成功,返回值是非零。否則為零。應用程序可以調用GetLastError擴展的錯誤信息。 [1] 

HeapFree例子

DWORD dirlen = GetLogicalDriveStrings(0,NULL);//獲取磁盤邏輯驅動的大小
LPSTR pdir = (LPSTR) HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,dirlen);//分配堆內存
LPSTR ptmp = pdir; //臨時指針,指向pdir
GetLogicalDriveStrings(dirlen,pdir); //這時候才是獲取主機中的所有盤符給緩衝區dirlen
CString szText;//用於記錄所有盤符
while(*pdir != NULL)
{
szText += pdir;//累加
m_Edit.SetWindowText(szText);//m_Edit為編輯框控件,類型為Control,不是value
pdir = strchr(pdir,NULL)+1;//指針移動
}
HeapFree(hp,HEAP_NO_SERIALIZE,ptmp);//釋放,如果不釋放會繼續增多佔用內存,直到程序結束
參考資料