HeapAlloc(Windows API)

 函数功能:

HeapAlloc 函数从堆中分配一块内存。分配的内存不可移动。

函数原型:

DECLSPEC_ALLOCATOR LPVOID HeapAlloc(
  [in] HANDLE hHeap,
  [in] DWORD  dwFlags,
  [in] SIZE_T dwBytes
);

参数解析:

参数 含义
hHeap 要分配内存的堆的句柄。该句柄由HeapCreat函数或GetProcessHeap函数返回。
dwFlags 堆分配选项。指定这些值中的任何一个都将覆盖使用HeapCreate创建堆时指定的相应值 。此参数可以是以下值中的一个或多个。
含义

HEAP_GENERATE_EXCEPTIONS

(0x00000004)

若指定了该值,调用HeapAlloc函数和HeapReAlloc函数失败时返回具体的错误代码,而不是返回NULL

HEAP_NO_SERIALIZE

(0x00000001)

若指定了该值,这样建立的堆不会进行独占性检测,访问速度可以更快

HEAP_ZERO_MEMORY

(0x00000008)

分配的内存将被初始化为零。否则,内存不会被初始化为零。
dwBytes 要分配的内存块的字节数

返回值:

如果函数成功,则返回值是指向已分配内存块的指针。

扫描二维码关注公众号,回复: 15229429 查看本文章

如果函数失败并且您没有指定HEAP_GENERATE_EXCEPTIONS,则返回值为NULL,

如果函数失败并且您已指定HEAP_GENERATE_EXCEPTIONS,则该函数可能会生成下表中列出的异常之一。

异常代码 描述
STATUS_NO_MEMORY 由于缺少可用内存或堆损坏,分配尝试失败。
STATUS_ACCESS_VIOLATION 由于堆损坏或不正确的函数参数,分配尝试失败。

猜你喜欢

转载自blog.csdn.net/qq_17111397/article/details/122185278