Zwalnianie pamięci wirtualnej
Funkcja VirtualFree odkomisuje i zwalnia strony zgodnie z następującymi zasadami:
- Wycofuje alokację dla co najmniej jednej zatwierdzonej strony, zmieniając stan stron na zarezerwowany. Anulowanie przydzielania stron zwalnia magazyn fizyczny skojarzony ze stronami, udostępniając go do przydzielania przez dowolny proces. Każdy blok zatwierdzonych stron można anulować.
- Zwalnia blok co najmniej jednej zarezerwowanej strony, zmieniając stan stron na wolny. Zwolnienie bloku stron sprawia, że zakres zarezerwowanych adresów jest dostępny do przydzielenia przez proces. Aby zwolnić zarezerwowane strony, należy zwolnić cały blok, który został początkowo zarezerwowany przez VirtualAlloc.
- Jednocześnie dekomituje i zwalnia blok co najmniej jednej zarezerwowanej strony, zmieniając stan stron na wolny. Wskazany blok musi zawierać cały blok początkowo zarezerwowany przez VirtualAlloc, a wszystkie strony muszą być obecnie zarezerwowane.
Po zwolnieniu lub zdezaktywowaniu bloku pamięci nigdy nie można odwoływać się do niego ponownie. Wszelkie informacje, które mogły znajdować się w tej pamięci, znikną na zawsze. Próba odczytu lub zapisu na wolnej stronie powoduje błąd związany z naruszeniem dostępu. Jeśli potrzebujesz informacji, nie usuwaj ani nie zwalniaj pamięci zawierającej te informacje.
Aby określić, że dane w zakresie pamięci nie są już interesujące, wywołaj metodę VirtualAlloc za pomocą polecenia MEM_RESET. Strony nie będą odczytywane ani zapisywane w pliku stronicowania. Blok pamięci można jednak użyć ponownie później.