Marshal::AllocHGlobal Method (IntPtr)


Allocates memory from the unmanaged memory of the process by using the pointer to the specified number of bytes.

Namespace:   System.Runtime.InteropServices
Assembly:  mscorlib (in mscorlib.dll)

static IntPtr AllocHGlobal(
	IntPtr cb


Type: System::IntPtr

The required number of bytes in memory.

Return Value

Type: System::IntPtr

A pointer to the newly allocated memory. This memory must be released using the Marshal::FreeHGlobal method.

Exception Condition

There is insufficient memory to satisfy the request.

AllocHGlobal is one of two memory allocation methods in the Marshal class. (Marshal::AllocCoTaskMem is the other.) This method exposes the Win32 LocalAlloc function from Kernel32.dll.

When AllocHGlobal calls LocalAlloc, it passes a LMEM_FIXED flag, which causes the allocated memory to be locked in place. Also, the allocated memory is not zero-filled.

For example code, see Marshal and AllocHGlobal.


requires full trust for the immediate caller. This member cannot be used by partially trusted or transparent code.

Universal Windows Platform
Available since 8
.NET Framework
Available since 1.1
Portable Class Library
Supported in: portable .NET platforms
Windows Phone
Available since 8.1
Return to top