Allocates a block of memory from a heap. The allocated memory is not movable.
LPVOID WINAPI HeapAlloc( _In_ HANDLE hHeap, _In_ DWORD dwFlags, _In_ SIZE_T dwBytes );
- hHeap [in]
- A handle to the heap from which the memory will be allocated. This handle is returned by the HeapCreate or GetProcessHeap function.
- dwFlags [in]
- The heap allocation options. Specifying any of these values will override the corresponding value specified when the heap was created with HeapCreate. This parameter can be one or more of the following values.
Value Meaning HEAP_GENERATE_EXCEPTIONS
The system will raise an exception to indicate a function failure, such as an out-of-memory condition, instead of returning NULL.
To ensure that exceptions are generated for all calls to this function, specify HEAP_GENERATE_EXCEPTIONS in the call to HeapCreate. In this case, it is not necessary to additionally specify HEAP_GENERATE_EXCEPTIONS in this function call.
Serialized access will not be used for this allocation.
To ensure that serialized access is disabled for all calls to this function, specify HEAP_NO_SERIALIZE in the call to HeapCreate. In this case, it is not necessary to additionally specify HEAP_NO_SERIALIZE in this function call.
This value should not be specified when accessing the process's default heap. The system may create additional threads within the application's process, such as a CTRL+C handler, that simultaneously access the process's default heap.
The allocated memory will be initialized to zero. Otherwise, the memory is not initialized to zero.
- dwBytes [in]
- The number of bytes to be allocated.
- If the heap specified by the hHeap parameter is a "non-growable" heap, dwBytes must be less than 0x7FFF8. You create a non-growable heap by calling the HeapCreate function with a nonzero value.
If the function succeeds, the return value is a pointer to the allocated memory block.
If the function fails and you have not specified HEAP_GENERATE_EXCEPTIONS, the return value is NULL.
If the function fails and you have specified HEAP_GENERATE_EXCEPTIONS, the function may generate either of the exceptions listed in the following table. The particular exception depends upon the nature of the heap corruption. For more information, see GetExceptionCode.
|STATUS_NO_MEMORY||The allocation attempt failed because of a lack of available memory or heap corruption.|
|STATUS_ACCESS_VIOLATION||The allocation attempt failed because of heap corruption or improper function parameters.|