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

HeapAlloc

鎖定
HeapAlloc是一個Windows API函數。它用來在指定的堆上分配內存,並且分配後的內存不可移動。
中文名
HeapAlloc
類    型
API函數
返回值
void*
聲明位置
Windows.h

HeapAlloc函數原型

LPVOID HeapAlloc(HANDLE hHeap,DWORD dwFlags,SIZE_T dwBytes,);

HeapAlloc參數

hHeap
要分配堆的句柄,可以通過HeapCreate()函數或GetProcessHeap()函數獲得。
dwFlags
堆分配時的可選參數,其值可以為以下的一種或多種:
意義
HEAP_GENERATE_EXCEPTIONS
如果分配錯誤將會拋出異常,而不是返回NULL。異常值可能是STATUS_NO_MEMORY, 表示獲得的內存容量不足,或是STATUS_ACCESS_VIOLATION,表示存取不合法。
HEAP_NO_SERIALIZE
不使用連續存取。
HEAP_ZERO_MEMORY
將分配的內存全部清零。
dwBytes
要分配堆的字節數。

HeapAlloc返回值

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

HeapAlloc例子

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

HeapAlloc需求

客户端
至少Windows 95。
服務器
至少Windows NT Server。
頭文件
在Winbase.h中聲明,包含於Windows.h。
庫文件
Kernel32.lib。
DLL
需要Kernel32.dll。