Поделиться через


Marshal.AllocHGlobal Метод

Определение

Выделяет память из неуправляемой памяти процесса.

Перегрузки

AllocHGlobal(Int32)

Выделяет память из неуправляемой памяти процесса с помощью указанного числа байтов.

AllocHGlobal(IntPtr)

Выделяет память из неуправляемой памяти процесса с помощью указателя на указанное число байтов.

AllocHGlobal(Int32)

Исходный код:
Marshal.cs
Исходный код:
Marshal.cs
Исходный код:
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, который следует использовать исключительно при вызове определенных API Win32 на платформе Windows. При использовании .NET 6 или более поздней версии используйте класс NativeMemory на всех платформах для выделения собственной памяти. При использовании .NET 6 или более ранней версии используйте AllocCoTaskMem на всех платформах для выделения собственной памяти.

AllocHGlobal является одним из двух методов выделения памяти в классе Marshal. (Marshal.AllocCoTaskMem — это другое.) Этот метод предоставляет функцию Win32 LocalAlloc из Kernel32.dll.

Когда AllocHGlobal вызывает LocalAlloc, он передает флаг LMEM_FIXED, что приводит к блокировке выделенной памяти. Кроме того, выделенная память не заполнена нулем.

См. также раздел

Применяется к

AllocHGlobal(IntPtr)

Исходный код:
Marshal.Unix.cs
Исходный код:
Marshal.Unix.cs
Исходный код:
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, который следует использовать исключительно при вызове определенных API Win32 на платформе Windows. При использовании .NET 6 или более поздней версии используйте класс NativeMemory на всех платформах для выделения собственной памяти. При использовании .NET 6 или более ранней версии используйте AllocCoTaskMem на всех платформах для выделения собственной памяти.

AllocHGlobal является одним из двух методов выделения памяти в классе Marshal. (Marshal.AllocCoTaskMem — это другое.) Этот метод предоставляет функцию Win32 LocalAlloc из Kernel32.dll.

Когда AllocHGlobal вызывает LocalAlloc, он передает флаг LMEM_FIXED, что приводит к блокировке выделенной памяти. Кроме того, выделенная память не заполнена нулем.

Пример кода см. в разделе Marshal и AllocHGlobal.

См. также раздел

Применяется к