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. Если вы передаете указатель, он обрабатывается как размер.
Возвращаемое значение
nativeint
Указатель на перераспределированную память. Эту память необходимо освободить с помощью FreeHGlobal(IntPtr).
- Атрибуты
Исключения
Недостаточно памяти для удовлетворения запроса.
Комментарии
Важный
Этот собственный средство выделения памяти — это устаревший API, который следует использовать исключительно при вызове определенных API Win32 на платформе Windows. При использовании .NET 6 или более поздней версии используйте класс NativeMemory на всех платформах для выделения собственной памяти. При использовании .NET 6 или более ранней версии используйте AllocCoTaskMem на всех платформах для выделения собственной памяти.
ReAllocHGlobal является одним из двух методов API перемещения памяти в классе Marshal. (Marshal.ReAllocCoTaskMem — это другое.)
Этот метод предоставляет функцию Win32 GlobalReAlloc из Kernel32.dll. Возвращаемый указатель может отличаться от исходного. Если он отличается, содержимое исходного блока памяти было скопировано в новый блок, и исходный блок памяти был освобожден.