RtlFreeHeap - NtDoc

Native API online documentation, based on the System Informer (formerly Process Hacker) phnt headers
#ifndef _NTRTL_H
#if (PHNT_VERSION >= PHNT_WINDOWS_8)

_Success_(return != 0)
NTSYSAPI
LOGICAL
NTAPI
RtlFreeHeap(
    _In_ HANDLE HeapHandle,
    _In_opt_ ULONG Flags,
    _Frees_ptr_opt_ _Post_invalid_ PVOID BaseAddress
    );

#endif
#endif

View code on GitHub
#ifndef _NTRTL_H
#if (PHNT_VERSION >= PHNT_WINDOWS_8)
// ...
#else

_Success_(return)
NTSYSAPI
BOOLEAN
NTAPI
RtlFreeHeap(
    _In_ HANDLE HeapHandle,
    _In_opt_ ULONG Flags,
    _Frees_ptr_opt_ PVOID BaseAddress
    );

#endif
#endif

View code on GitHub
// ntifs.h

NTSYSAPI LOGICAL RtlFreeHeap(
  [in]           PVOID                 HeapHandle,
  [in, optional] ULONG                 Flags,
                 _Frees_ptr_opt_ PVOID BaseAddress
);
View the official Windows Driver Kit DDI reference
// ntifs.h

BOOLEAN RtlFreeHeap(
  _In_     PVOID HeapHandle,
  _In_opt_ ULONG Flags,
  _In_     PVOID HeapBase
);
View the official Win32 development documentation

NtDoc

No description available.

Windows Driver Kit DDI reference (nf-ntifs-rtlfreeheap)

RtlFreeHeap function

Description

The RtlFreeHeap routine frees a memory block that was allocated from a heap by RtlAllocateHeap.

Parameters

HeapHandle [in]

A handle for the heap whose memory block is to be freed. This parameter is a handle returned by RtlCreateHeap.

Flags [in, optional]

A set of flags that controls aspects of freeing a memory block. Specifying the following value overrides the corresponding value that was specified in the Flags parameter when the heap was created by RtlCreateHeap.

Flag Meaning
HEAP_NO_SERIALIZE Mutual exclusion will not be used when RtlFreeHeap is accessing the heap.

BaseAddress

A pointer to the memory block to free. This pointer is returned by RtlAllocateHeap.

Return value

RtlFreeHeap returns TRUE if the block was freed successfully; FALSE otherwise.

Note Starting with Windows 8 the return value is typed as LOGICAL, which has a different size than BOOLEAN.

See also

RtlAllocateHeap

RtlCreateHeap

RtlDestroyHeap


Win32 development documentation (rtlfreeheap)

RtlFreeHeap function

Frees a memory block that was allocated from a heap by RtlAllocateHeap.

Parameters

HeapHandle [in]

A handle for the heap whose memory block is to be freed. This parameter is a handle returned by RtlCreateHeap.

Flags [in, optional]

A set of flags that controls aspects of freeing a memory block. Specifying the following value overrides the corresponding value that was specified in the Flags parameter when the heap was created by RtlCreateHeap.

Flag Meaning
HEAP_NO_SERIALIZE
Mutual exclusion will not be used when RtlFreeHeap is accessing the heap.

HeapBase [in]

A pointer to the memory block to free. This pointer is returned by RtlAllocateHeap.

Return value

Returns TRUE if the block was freed successfully; FALSE otherwise.

[!Note] Starting with Windows 8 the return value is typed as LOGICAL, which has a different size than BOOLEAN.

Requirements

Requirement Value
Minimum supported client
Windows 2000 Professional [desktop apps only]
Minimum supported server
Windows 2000 Server [desktop apps only]
Target platform
Universal
Header
Ntifs.h (include Ntifs.h)
Library
Ntdll.lib
DLL
Ntdll.dll

See also

RtlAllocateHeap

RtlCreateHeap

RtlDestroyHeap


NTinternals.net (undocumented.ntinternals.net)

This function is documented in Windows Driver Kit.


Maps directly to Win32 API HeapFree from Kernel32.dll.

Documented by

See also