• 1.摘要
  • 2.基本信息
  • 3.语法
  • 4.参数
  • 5.返回值
  • 6.例子
  • 7.需求

HeapAlloc

HeapAlloc是一个WindowsAPI函数。它用来在指定的堆上分配内存,并且分配后的内存不可移动。

基本信息

  • 中文名

    HeapAlloc

  • 类型

    函数

  • 语法

    HANDLE hHeap

  • 参数

    dwFlags

语法

LPVOID HeapAlloc(

HANDLE hHeap,

DWORD dwFlags,

SIZE_T dwBytes,

);

参数

要分配堆的句柄,可以通过HeapCreate()函数或GetProcessHeap()函数获得。

堆分配时的可选参数,其值可以为以下的一种或多种:

意义

HEAP_GENERATE_EXCEPTIONS

如果分配错误将会抛出异常,而不是返回NULL。异常值可能是STATUS_NO_MEMORY, 表示获得的内存容量不足,或是STATUS_ACCESS_VIOLATION,表示存取不合法。

HEAP_NO_SERIALIZE

不使用连续存取

HEAP_ZERO_MEMORY

将分配的内存全部清零

要分配堆的字节数。

返回值

如果成功分配内存,返回值为一个指向所分配内存块的首地址的(void*)指针。

如果分配内存失败,并且没有指定HEAP_GENERATE_EXCEPTIONS,则返回NULL。

如果指定了HEAP_GENERATE_EXCEPTIONS,则抛出异常,而不返回NULL:

异常代码

描述

STATUS_NO_MEMORY

由于缺少可用内存或者是堆损坏导致分配失败

STATUS_ACCESS_VIOLATION

由于堆损坏或者是不正确的函数参数导致分配失败

例子