Export (0) Print
Expand All

Marshal::AllocHGlobal Method (Int32)

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

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

public:
static IntPtr AllocHGlobal(
	int cb
)

Parameters

cb
Type: System::Int32

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.

ExceptionCondition
OutOfMemoryException

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.

The following example demonstrates calling the AllocHGlobal method. This code example is part of a larger example provided for the Marshal class.

// Demonstrate how to call GlobalAlloc and  
// GlobalFree using the Marshal class.
IntPtr hglobal = Marshal::AllocHGlobal(100);
Marshal::FreeHGlobal(hglobal);

.NET Framework

Supported in: 4.6, 4.5, 4, 3.5, 3.0, 2.0, 1.1

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

Portable Class Library

Supported in: Portable Class Library

Supported in: Windows Phone 8.1

Supported in: Windows Phone Silverlight 8.1

Supported in: Windows Phone Silverlight 8

  • SecurityCriticalAttribute 

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

Show:
© 2015 Microsoft