HeapAlloc

HeapAlloc是一個Windows API函式。它用來在指定的堆上分配記憶體,並且分配後的記憶體不可移動。

基本介紹

  • 中文名:HeapAlloc
  • 類型:API函式
  • 返回值:void*
  • 聲明位置:Windows.h
函式原型,參數,返回值,例子,需求,

函式原型

LPVOID HeapAlloc(
HANDLE hHeap,
DWORD dwFlags,
SIZE_TdwBytes,
);

參數

hHeap
要分配堆的句柄,可以通過HeapCreate()函式或GetProcessHeap()函式獲得。
dwFlags
堆分配時的可選參數,其值可以為以下的一種或多種:

意義
HEAP_GENERATE_EXCEPTIONS
如果分配錯誤將會拋出異常,而不是返回NULL。異常值可能是STATUS_NO_MEMORY, 表示獲得的記憶體容量不足,或是STATUS_ACCESS_VIOLATION,表示存取不合法。
HEAP_NO_SERIALIZE
不使用連續存取。
HEAP_ZERO_MEMORY
將分配的記憶體全部清零。
dwBytes
要分配堆的位元組數。

返回值

如果成功分配記憶體,返回值為一個指向所分配記憶體塊的首地址的(void*)指針。
如果分配記憶體失敗,並且沒有指定HEAP_GENERATE_EXCEPTIONS,則返回NULL。
如果指定了HEAP_GENERATE_EXCEPTIONS,則拋出異常,而不返回NULL:
異常代碼
描述
STATUS_NO_MEMORY
由於缺少可用記憶體或者是堆損壞導致分配失敗。
STATUS_ACCESS_VIOLATION
由於堆損壞或者是不正確的函式參數導致分配失敗。.

例子

plfTable = (PIP_INTERFACE_INFO)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(PIP_INTERFACE_INFO));
// ... (your operations)
HeapFree(GetProcessHeap(), 0, plfTable); // 使用完畢後釋放堆
註:PIP_INTERFACE_INFO結構包含了與IPv4網路接口適配器,在本地系統上啟用的列表

需求

客戶端
至少Windows 95。
伺服器
至少Windows NT Server。
頭檔案
在Winbase.h中聲明,包含於Windows.h。
庫檔案
Kernel32.lib。
DLL
需要Kernel32.dll。

相關詞條

熱門詞條

聯絡我們