Изменение размера блока памяти
С помощью функции HeapReAlloc приложение может изменить размер блока памяти, выделенного ранее функцией HeapAlloc, уменьшив или увеличив его. Прототип функции HeapReAlloc приведен ниже:
LPVOID HeapReAlloc(
HANDLE hHeap, // идентификатор пула
DWORD dwFlags, // флаг изменения размера блока памяти
LPVOID lpMem, // адрес блока памяти
DWORD dwBytes); // новый размер блока памяти в байтах
Для пула hHeap эта функция изменяет размер блока памяти, расположенного по адресу lpMem. Новый размер составит dwBytes байт.
В случае удачи функция HeapReAlloc возвратит адрес нового блока памяти, который не обязательно будет совпадать с адресом, полученным этой функцией через параметр lpMem.
Через параметр dwFlags вы можете передавать те же параметры, что и через аналогичный параметр для функции HeapAlloc. Дополнительно можно указать параметр HEAP_REALLOC_IN_PLACE_ONLY, определяющий, что при изменении размера блока памяти его нужно оставить на прежнем месте адресного пространства. Очевидно, что если указан этот параметр, в случае успешного завершения функция HeapReAlloc вернет то же значение, что было передано ей через параметр lpMem.