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


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

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

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

Синтаксис

DECLSPEC_ALLOCATOR HLOCAL LocalReAlloc(
  [in] _Frees_ptr_opt_ HLOCAL hMem,
  [in] SIZE_T                 uBytes,
  [in] UINT                   uFlags
);

Параметры

[in] hMem

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

[in] uBytes

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

[in] uFlags

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

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

Значение Значение
LMEM_MOVEABLE
0x0002
Выделяет фиксированную или перемещаемую память.

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

 

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

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

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

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

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

Комментарии

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

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

Требования

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

См. также

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

LocalAlloc

LocalFree

LocalLock

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