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


Функция GlobalReAlloc (winbase.h)

Изменяет размер или атрибуты указанного объекта глобальной памяти. Размер может увеличиваться или уменьшаться.

Примечание Глобальные функции имеют большую нагрузку и предоставляют меньше функций, чем другие функции управления памятью. Новые приложения должны использовать функции кучи , если в документации не указано, что следует использовать глобальную функцию. Дополнительные сведения см. в разделе Глобальные и локальные функции.
 

Синтаксис

DECLSPEC_ALLOCATOR HGLOBAL GlobalReAlloc(
  [in] _Frees_ptr_ HGLOBAL hMem,
  [in] SIZE_T              dwBytes,
  [in] UINT                uFlags
);

Параметры

[in] hMem

Дескриптор для перераспределенного объекта глобальной памяти. Этот дескриптор возвращается функцией GlobalAlloc или GlobalReAlloc .

[in] dwBytes

Новый размер блока памяти в байтах. Если uFlags указывает GMEM_MODIFY, этот параметр игнорируется.

[in] uFlags

Параметры перераспределения. Если указан GMEM_MODIFY , функция изменяет атрибуты только объекта памяти (параметр dwBytes игнорируется). В противном случае функция перераспределяет объект памяти.

При необходимости можно объединить GMEM_MODIFY со следующим значением.

Значение Значение
GMEM_MOVEABLE
0x0002
Выделяет перемещаемую память.

Если память является заблокированным GMEM_MOVEABLE блоком памяти или блоком GMEM_FIXED памяти и этот флаг не указан, объем памяти можно перераспределить только на месте.

 

Если этот параметр не указывает GMEM_MODIFY, можно использовать следующее значение.

Значение Значение
GMEM_ZEROINIT
0x0040
Вызывает инициализацию дополнительного содержимого памяти до нуля, если размер объекта памяти увеличивается.

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

Если функция выполняется успешно, возвращаемое значение является дескриптором для перераспределенного объекта памяти.

Если функция завершается сбоем, возвращается значение NULL. Дополнительные сведения об ошибке можно получить, вызвав GetLastError.

Комментарии

Если GlobalReAlloc перераспределяет перемещаемый объект, возвращаемое значение является дескриптором объекта памяти. Чтобы преобразовать дескриптор в указатель, используйте функцию GlobalLock .

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

Если GlobalReAlloc завершается сбоем, исходная память не освобождается, а исходный дескриптор и указатель остаются действительными.

Требования

Требование Значение
Минимальная версия клиента Windows XP [классические приложения | Приложения UWP]
Минимальная версия сервера Windows Server 2003 [классические приложения | Приложения UWP]
Целевая платформа Windows
Header winbase.h (включая Windows.h)
Библиотека Kernel32.lib
DLL Kernel32.dll

См. также

Глобальные и локальные функции

GlobalAlloc

GlobalDiscard

GlobalLock

Функции управления памятью