HeapFree

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);//釋放,如果不釋放會繼續增多占用記憶體,直到程式結束

相關詞條

熱門詞條

聯絡我們