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


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

Функция VirtualFree удаляет и освобождает страницы в соответствии со следующими правилами:

  • Отменяет фиксацию одной или нескольких зафиксированных страниц, изменяя состояние страниц на зарезервированные. Списание страниц освобождает физическое хранилище, связанное со страницами, что делает его доступным для выделения любым процессом. Любой блок зафиксированных страниц может быть списан.
  • Освобождает блок одной или нескольких зарезервированных страниц, изменяя состояние страниц на свободное. Освобождение блока страниц делает диапазон зарезервированных адресов доступным для выделения процессом. Зарезервированные страницы можно освободить, только освободив весь блок, изначально зарезервированный VirtualAlloc.
  • Одновременно удаляет и освобождает блок одной или нескольких зафиксированных страниц, изменяя состояние страниц на свободное. Указанный блок должен включать весь блок, изначально зарезервированный VirtualAlloc, и все страницы должны быть зафиксированы в данный момент.

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

Чтобы указать, что данные в диапазоне памяти больше не являются интересующими вас, вызовите VirtualAlloc с MEM_RESET. Страницы не будут считываться из файла подкачки или записываться в нее. Однако блок памяти можно будет использовать позже.