Libération de la mémoire virtuelle
La fonction VirtualFree déscommit et libère les pages selon les règles suivantes :
- Désengage une ou plusieurs pages validées, en remplaçant l’état des pages par réservé. La désaffectation des pages libère le stockage physique associé aux pages, ce qui le rend disponible pour être alloué par n’importe quel processus. Tout bloc de pages validées peut être décompressé.
- Libère un bloc d’une ou plusieurs pages réservées, en modifiant l’état des pages en libre. La libération d’un bloc de pages rend la plage d’adresses réservées disponibles pour être allouées par le processus. Les pages réservées peuvent être publiées uniquement en libérant l’intégralité du bloc initialement réservé par VirtualAlloc.
- Désengage et libère un bloc d’une ou plusieurs pages validées simultanément, en modifiant l’état des pages en libre. Le bloc spécifié doit inclure l’intégralité du bloc initialement réservé par VirtualAlloc, et toutes les pages doivent être validées.
Une fois qu’un bloc de mémoire est libéré ou décompressé, vous ne pouvez plus y faire référence. Toutes les informations qui ont pu être dans cette mémoire ont disparu pour toujours. Toute tentative de lecture ou d’écriture dans une page gratuite entraîne une exception de violation d’accès. Si vous avez besoin d’informations, ne désengagez pas ou libérez pas de mémoire contenant ces informations.
Pour spécifier que les données d’une plage de mémoire ne sont plus intéressantes, appelez VirtualAlloc avec MEM_RESET. Les pages ne sont pas lues ou écrites dans le fichier de pagination. Toutefois, le bloc de mémoire peut être réutilisé ultérieurement.