HeapAlloc是一個Windows API函式。它用來在指定的堆上分配記憶體,並且分配後的記憶體不可移動。
基本介紹
- 中文名:HeapAlloc
- 類型:API函式
- 返回值:void*
- 聲明位置:Windows.h
函式原型,參數,返回值,例子,需求,
函式原型
LPVOID HeapAlloc(
HANDLE hHeap,
DWORD dwFlags,
SIZE_T dwBytes,
);
參數
hHeap
要分配堆的句柄,可以通過HeapCreate()函式或GetProcessHeap()函式獲得。
dwFlags
堆分配時的可選參數,其值可以為以下的一種或多種:
值 | 意義 |
---|---|
HEAP_GENERATE_EXCEPTIONS | |
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。 |