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

Освобождение виртуальной памяти


После использования вы должны освободить полученную ранее виртуальную память, вызвав функцию VirtualFree:

BOOL VirtualFree(

  LPVOID lpvAddress,   // адрес области

  DWORD  cbSize,       // размер области

  DWORD  fdwFreeType); // выполняемая операция

Через параметры lpvAddress и cbSize передаются, соответственно, адрес и размер освобождаемой области.

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

В первом случае вы должны вызвать функцию VirtualFree с параметром fdwFreeType, равным MEM_RELEASE, во втором - с параметром MEM_DECOMMIT.



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