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 Framework используйте AllocCoTaskMem на всех платформах для выделения собственной памяти.
ReAllocHGlobal является одним из двух методов API перемещения памяти в классе Marshal. (Marshal.ReAllocCoTaskMem — это другое.)
Этот метод предоставляет функцию Win32 GlobalReAlloc из Kernel32.dll. Возвращаемый указатель может отличаться от исходного. Если он отличается, содержимое исходного блока памяти было скопировано в новый блок, и исходный блок памяти был освобожден.