Delen via


Virtueel geheugen vrijmaken

De functie VirtualFree verwijdert pagina's en publiceert deze op basis van de volgende regels:

  • Hiermee worden een of meer vastgelegde pagina's gedecommitteerd, waardoor de status van de pagina's wordt gewijzigd naar gereserveerd. Bij het ongedaan maken van pagina's wordt de fysieke opslag die aan de pagina's is gekoppeld, vrijgegeven, zodat deze beschikbaar is voor toewijzing door elk proces. Elk blok vastgelegde pagina's kan worden gedecommitteerd.
  • Hiermee wordt een blok van een of meer gereserveerde pagina's vrijgegeven, waardoor de status van de pagina's op vrij wordt gezet. Door een blok pagina's vrij te geven, is het bereik van gereserveerde adressen beschikbaar dat door het proces kan worden toegewezen. Gereserveerde pagina's kunnen alleen worden vrijgegeven door het hele blok vrij te maken dat oorspronkelijk is gereserveerd door VirtualAlloc.
  • Hiermee wordt een blok van een of meer toegewezen pagina's tegelijkertijd ontdaan van hun toewijzing en vrijgegeven, waardoor de status van de pagina's wordt gewijzigd naar vrij. Het opgegeven blok moet het volledige blok omvatten dat in eerste instantie is gereserveerd door VirtualAllocen alle pagina's moeten momenteel zijn toegewezen.

Nadat een geheugenblok is vrijgegeven of gedecommitteerd, kunt u er nooit meer naar verwijzen. Alle informatie die in dat geheugen aanwezig kan zijn, is voor altijd verdwenen. Als u probeert te lezen van of te schrijven naar een gratis pagina, resulteert dit in een uitzondering voor toegangsschending. Als u informatie nodig hebt, moet u het geheugen met die informatie niet vrijgeven of decommitteren.

Om op te geven dat de gegevens in een geheugenbereik niet meer van belang zijn, roept u VirtualAlloc aan met MEM_RESET. De pagina's worden niet gelezen van of naar het wisselbestand geschreven. Het geheugenblok kan echter later opnieuw worden gebruikt.