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
Требуемое количество байтов в памяти.
Возвращаемое значение
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
Требуемое количество байтов в памяти.
Возвращаемое значение
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.