Marshal::AllocHGlobal Method (Int32)

 

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

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

public:
[SecurityCriticalAttribute]
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.

Exception Condition
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 AllocHGlobalmethod. 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);

SecurityCriticalAttribute

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 Silverlight
Available since 8.0
Windows Phone
Available since 8.1
Return to top
Show: