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


Marshal.ReAllocHGlobal(IntPtr, IntPtr) Метод

Определение

Изменяет размер блока памяти, ранее выделенного с помощью AllocHGlobal(IntPtr).

public:
 static IntPtr ReAllocHGlobal(IntPtr pv, IntPtr cb);
[System.Security.SecurityCritical]
public static IntPtr ReAllocHGlobal (IntPtr pv, IntPtr cb);
public static IntPtr ReAllocHGlobal (IntPtr pv, IntPtr cb);
[<System.Security.SecurityCritical>]
static member ReAllocHGlobal : nativeint * nativeint -> nativeint
static member ReAllocHGlobal : nativeint * nativeint -> nativeint
Public Shared Function ReAllocHGlobal (pv As IntPtr, cb As IntPtr) As IntPtr

Параметры

pv
IntPtr

nativeint

Указатель на память, выделенную AllocHGlobal(IntPtr).

cb
IntPtr

nativeint

Новый размер выделенного блока. Это не указатель; это запрашиваемое число байтов, приведение к типу IntPtr. Если вы передаете указатель, он обрабатывается как размер.

Возвращаемое значение

IntPtr

nativeint

Указатель на перераспределированную память. Эту память необходимо освободить с помощью FreeHGlobal(IntPtr).

Атрибуты

Исключения

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

Комментарии

Важный

Этот собственный средство выделения памяти — это устаревший API, который следует использовать исключительно при вызове определенных API Win32 на платформе Windows. При использовании .NET 6 или более поздней версии используйте класс NativeMemory на всех платформах для выделения собственной памяти. При использовании .NET 6 или более ранней версии используйте AllocCoTaskMem на всех платформах для выделения собственной памяти.

ReAllocHGlobal является одним из двух методов API перемещения памяти в классе Marshal. (Marshal.ReAllocCoTaskMem — это другое.)

Этот метод предоставляет функцию Win32 GlobalReAlloc из Kernel32.dll. Возвращаемый указатель может отличаться от исходного. Если он отличается, содержимое исходного блока памяти было скопировано в новый блок, и исходный блок памяти был освобожден.

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

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