Marshal.AllocHGlobal 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
從進程的 Unmanaged 記憶體配置記憶體。
多載
AllocHGlobal(Int32) |
使用指定的位元組數目,從進程的 Unmanaged 記憶體配置記憶體。 |
AllocHGlobal(IntPtr) |
使用指定位元組數目的指標,從進程的 Unmanaged 記憶體配置記憶體。 |
AllocHGlobal(Int32)
- 來源:
- Marshal.cs
- 來源:
- Marshal.cs
- 來源:
- Marshal.cs
使用指定的位元組數目,從進程的 Unmanaged 記憶體配置記憶體。
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)
使用指定位元組數目的指標,從進程的 Unmanaged 記憶體配置記憶體。
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。