Программирование для Windows NT

       

Изменение размера блока памяти


С помощью функции 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.



Содержание раздела