HeapFree是一個Windows API函式。它用來釋放堆記憶體
基本介紹
- 外文名:HeapFree
- 釋義:Windows API函式
- 作用:釋放堆記憶體
- 平台:Windows
語法,參數,返回值,例,
語法
BOOL HeapFree(
HANDLE hHeap,
DWORD dwFlags,
LPVOID lpMem
);
參數
hHeap
堆記憶體塊釋放。這個參數是HeapCreate或GetProcessHeap函式返回的句柄。
dwFlags
指定幾個可控釋放的記憶體塊。指定以下值將覆蓋flOptions中指定參數對應的值,當堆是由使用HeapCreate函式。
值 | 意思 |
---|---|
HEAP_NO_SERIALIZE | 串列存取將不會被使用。 為了確保序列化訪問,所有調用這個函式將被禁用,在調用HeapCreate指定HEAP_NO_SERIALIZE。在這種情況下,沒有必要在此函式調用另外指定HEAP_NO_SERIALIZE。 訪問進程堆時沒有指定此值。該系統可以創建應用程式的過程中額外的執行緒,如CTRL + C處理程式,同時訪問進程堆。 |
lpMem
被釋放的記憶體塊的指針。這HeapAlloc或HeapReAlloc函式返回的指針。如果這個指針為NULL,則為空。
返回值
如果函式成功,返回值是非零。否則為零。應用程式可以調用GetLastError擴展的錯誤信息。
例
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);//釋放,如果不釋放會繼續增多占用記憶體,直到程式結束