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


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)

Комментарии

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).

Атрибуты

Исключения

Недостаточно памяти для выполнения запроса.

Комментарии

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

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

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

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

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