Marshal.AllocHGlobal 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
从进程的非托管内存中分配内存。
重载
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
内存中所需的字节数。
返回
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 来分配本机内存。
AllocHGlobal 是 Marshal 类中的两种内存分配方法之一。 (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
内存中所需的字节数。
返回
nativeint
指向新分配内存的指针。 必须使用 FreeHGlobal(IntPtr) 方法释放此内存。
- 属性
例外
内存不足,无法满足请求。
注解
重要
此本机内存分配器是一个旧版 API,应在 Windows 平台上由特定 Win32 API 调用时专门使用。 面向 .NET 6 或更高版本时,请使用所有平台上的 NativeMemory 类来分配本机内存。 面向 .NET 6 或更早版本时,在所有平台上使用 AllocCoTaskMem 来分配本机内存。
AllocHGlobal 是 Marshal 类中的两种内存分配方法之一。 (Marshal.AllocCoTaskMem 是另一个。此方法从 Kernel32.dll公开 Win32 LocalAlloc 函数。
AllocHGlobal 调用 LocalAlloc
时,它会传递 LMEM_FIXED
标志,这会导致分配的内存锁定到位。 此外,分配的内存不是零填充的。
有关示例代码,请参阅 Marshal 和 AllocHGlobal。