共用方式為


Marshal.AllocHGlobal 方法

定義

從進程的 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

記憶體中所需的位元組數目。

傳回

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)

來源:
Marshal.Unix.cs
來源:
Marshal.Unix.cs
來源:
Marshal.Unix.cs

使用指定位元組數目的指標,從進程的 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

記憶體中所需的位元組數目。

傳回

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

另請參閱

適用於