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


Marshal.AllocHGlobal Метод

Определение

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

Перегрузки

Имя Описание
AllocHGlobal(Int32)

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

AllocHGlobal(IntPtr)

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

AllocHGlobal(Int32)

Исходный код:
Marshal.cs
Исходный код:
Marshal.cs
Исходный код:
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 Framework используйте AllocCoTaskMem на всех платформах для выделения собственной памяти.

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

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

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

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

AllocHGlobal(IntPtr)

Исходный код:
Marshal.Unix.cs
Исходный код:
Marshal.Unix.cs
Исходный код:
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 Framework используйте AllocCoTaskMem на всех платформах для выделения собственной памяти.

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

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

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

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

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