Marshal.AllocHGlobal Method (IntPtr) (System.Runtime.InteropServices)

Switch View :
ScriptFree
.NET Framework Class Library
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)
Syntax

Visual Basic
Public Shared Function AllocHGlobal ( _
	cb As IntPtr _
) As IntPtr
C#
public static IntPtr AllocHGlobal(
	IntPtr cb
)
Visual C++
public:
static IntPtr AllocHGlobal(
	IntPtr cb
)
F#
static member AllocHGlobal : 
        cb:IntPtr -> IntPtr 

Parameters

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.
Exceptions

Exception Condition
OutOfMemoryException

There is insufficient memory to satisfy the request.

Remarks

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.

Version Information

.NET Framework

Supported in: 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Supported in: 4, 3.5 SP1
.NET Framework Security

  • SecurityCriticalAttribute  

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

Platforms

Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.
See Also

Reference

Community Content

romkyns
Takes a byte count directly, not a pointer to one.
The introductory sentence is completely misleading:
Allocates memory from the unmanaged memory of the process by using the pointer to the specified number of bytes.
whereas in reality it just takes the number of bytes directly.