Udostępnij za pośrednictwem


Marshal.AllocHGlobal Metoda

Definicja

Przydziela pamięć z niezarządzanej pamięci procesu.

Przeciążenia

AllocHGlobal(Int32)

Przydziela pamięć z niezarządzanej pamięci procesu przy użyciu określonej liczby bajtów.

AllocHGlobal(IntPtr)

Przydziela pamięć z niezarządzanej pamięci procesu przy użyciu wskaźnika do określonej liczby bajtów.

AllocHGlobal(Int32)

Źródło:
Marshal.cs
Źródło:
Marshal.cs
Źródło:
Marshal.cs

Przydziela pamięć z niezarządzanej pamięci procesu przy użyciu określonej liczby bajtów.

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

Parametry

cb
Int32

Wymagana liczba bajtów w pamięci.

Zwraca

IntPtr

nativeint

Wskaźnik do nowo przydzielonej pamięci. Ta pamięć musi zostać zwolniona przy użyciu metody FreeHGlobal(IntPtr).

Atrybuty

Wyjątki

Brak pamięci do spełnienia żądania.

Przykłady

W poniższym przykładzie pokazano wywołanie metody AllocHGlobal. Ten przykład kodu jest częścią większego przykładu udostępnionego dla klasy 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)

Uwagi

Ważny

Ten macierzysty alokator pamięci jest starszym interfejsem API, który powinien być używany wyłącznie w przypadku wywołania przez określone interfejsy API Win32 na platformie Windows. W przypadku określania wartości docelowej platformy .NET 6 lub nowszej użyj klasy NativeMemory na wszystkich platformach, aby przydzielić pamięć natywną. W przypadku określania wartości docelowej platformy .NET 6 lub starszej użyj AllocCoTaskMem na wszystkich platformach, aby przydzielić pamięć natywną.

AllocHGlobal jest jedną z dwóch metod alokacji pamięci w klasie Marshal. ( jest drugą). Ta metoda uwidacznia funkcję LocalAlloc Win32 z Kernel32.dll.

Gdy AllocHGlobal wywołuje LocalAlloc, przekazuje flagę LMEM_FIXED, która powoduje zablokowanie przydzielonej pamięci. Ponadto przydzielona pamięć nie jest wypełniona zero.

Zobacz też

Dotyczy

AllocHGlobal(IntPtr)

Źródło:
Marshal.Unix.cs
Źródło:
Marshal.Unix.cs
Źródło:
Marshal.Unix.cs

Przydziela pamięć z niezarządzanej pamięci procesu przy użyciu wskaźnika do określonej liczby bajtów.

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

Parametry

cb
IntPtr

nativeint

Wymagana liczba bajtów w pamięci.

Zwraca

IntPtr

nativeint

Wskaźnik do nowo przydzielonej pamięci. Ta pamięć musi zostać zwolniona przy użyciu metody FreeHGlobal(IntPtr).

Atrybuty

Wyjątki

Brak pamięci do spełnienia żądania.

Uwagi

Ważny

Ten macierzysty alokator pamięci jest starszym interfejsem API, który powinien być używany wyłącznie w przypadku wywołania przez określone interfejsy API Win32 na platformie Windows. W przypadku określania wartości docelowej platformy .NET 6 lub nowszej użyj klasy NativeMemory na wszystkich platformach, aby przydzielić pamięć natywną. W przypadku określania wartości docelowej platformy .NET 6 lub starszej użyj AllocCoTaskMem na wszystkich platformach, aby przydzielić pamięć natywną.

AllocHGlobal jest jedną z dwóch metod alokacji pamięci w klasie Marshal. ( jest drugą). Ta metoda uwidacznia funkcję LocalAlloc Win32 z Kernel32.dll.

Gdy AllocHGlobal wywołuje LocalAlloc, przekazuje flagę LMEM_FIXED, która powoduje zablokowanie przydzielonej pamięci. Ponadto przydzielona pamięć nie jest wypełniona zero.

Zobacz na przykład kod Marshal i AllocHGlobal.

Zobacz też

Dotyczy