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