Marshal.AllocHGlobal 方法

定义

从进程的非托管内存中分配内存。

重载

AllocHGlobal(Int32)

使用指定的字节数从进程的非托管内存中分配内存。

AllocHGlobal(IntPtr)

通过使用指向指定字节数的指针,从进程的非托管内存中分配内存。

AllocHGlobal(Int32)

Source:
Marshal.cs
Source:
Marshal.cs
Source:
Marshal.cs

使用指定的字节数从进程的非托管内存中分配内存。

public:
 static IntPtr AllocHGlobal(int cb);
[System.Security.SecurityCritical]
public static IntPtr AllocHGlobal (int cb);
public static IntPtr AllocHGlobal (int cb);
[<System.Security.SecurityCritical>]
static member AllocHGlobal : int -> nativeint
static member AllocHGlobal : int -> nativeint
Public Shared Function AllocHGlobal (cb As Integer) As IntPtr

参数

cb
Int32

内存中所需的字节数。

返回

IntPtr

nativeint

指向新分配内存的指针。 必须使用 FreeHGlobal(IntPtr) 方法释放此内存。

属性

例外

内存不足,无法满足请求。

示例

以下示例演示如何调用 AllocHGlobal 方法。 此代码示例是为 Marshal 类提供的大型示例的一部分。

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

注解

重要

此本机内存分配器是一个旧版 API,应在 Windows 平台上由特定 Win32 API 调用时专门使用。 面向 .NET 6 或更高版本时,请使用所有平台上的 NativeMemory 类来分配本机内存。 面向 .NET 6 或更早版本时,在所有平台上使用 AllocCoTaskMem 来分配本机内存。

AllocHGlobalMarshal 类中的两种内存分配方法之一。 (Marshal.AllocCoTaskMem 是另一个。此方法从 Kernel32.dll公开 Win32 LocalAlloc 函数。

AllocHGlobal 调用 LocalAlloc时,它会传递 LMEM_FIXED 标志,这会导致分配的内存锁定到位。 此外,分配的内存不是零填充的。

另请参阅

适用于

AllocHGlobal(IntPtr)

Source:
Marshal.Unix.cs
Source:
Marshal.Unix.cs
Source:
Marshal.Unix.cs

通过使用指向指定字节数的指针,从进程的非托管内存中分配内存。

public:
 static IntPtr AllocHGlobal(IntPtr cb);
[System.Security.SecurityCritical]
public static IntPtr AllocHGlobal (IntPtr cb);
public static IntPtr AllocHGlobal (IntPtr cb);
[<System.Security.SecurityCritical>]
static member AllocHGlobal : nativeint -> nativeint
static member AllocHGlobal : nativeint -> nativeint
Public Shared Function AllocHGlobal (cb As IntPtr) As IntPtr

参数

cb
IntPtr

nativeint

内存中所需的字节数。

返回

IntPtr

nativeint

指向新分配内存的指针。 必须使用 FreeHGlobal(IntPtr) 方法释放此内存。

属性

例外

内存不足,无法满足请求。

注解

重要

此本机内存分配器是一个旧版 API,应在 Windows 平台上由特定 Win32 API 调用时专门使用。 面向 .NET 6 或更高版本时,请使用所有平台上的 NativeMemory 类来分配本机内存。 面向 .NET 6 或更早版本时,在所有平台上使用 AllocCoTaskMem 来分配本机内存。

AllocHGlobalMarshal 类中的两种内存分配方法之一。 (Marshal.AllocCoTaskMem 是另一个。此方法从 Kernel32.dll公开 Win32 LocalAlloc 函数。

AllocHGlobal 调用 LocalAlloc时,它会传递 LMEM_FIXED 标志,这会导致分配的内存锁定到位。 此外,分配的内存不是零填充的。

有关示例代码,请参阅 MarshalAllocHGlobal

另请参阅

适用于