Freigeben von virtuellem Arbeitsspeicher

Die VirtualFree-Funktion hebt Seiten gemäß den folgenden Regeln auf und gibt sie frei:

  • Entfernt eine oder mehrere committete Seiten, und ändert den Status der Seiten in reserviert. Durch das Aufheben der Demittierung von Seiten wird der physische Speicher freigegeben, der den Seiten zugeordnet ist, und stellt ihn für die Zuordnung durch einen beliebigen Prozess zur Verfügung. Jeder Block von gebundenen Seiten kann decommittediert werden.
  • Gibt einen Block mit einer oder mehreren reservierten Seiten frei, und ändert den Status der Seiten in free. Durch das Freigeben eines Blockes von Seiten wird der Bereich der reservierten Adressen verfügbar, die vom Prozess zugeordnet werden können. Reservierte Seiten können nur freigegeben werden, indem der gesamte Block freigegeben wird, der ursprünglich von VirtualAlloc reserviert wurde.
  • Hebt den Block einer oder mehrerer gebundener Seiten gleichzeitig auf und gibt diesen frei, und ändert den Zustand der Seiten, um sie freizugeben. Der angegebene Block muss den gesamten Block enthalten, der ursprünglich von VirtualAlloc reserviert wurde, und alle Seiten müssen derzeit committet werden.

Nachdem ein Speicherblock freigegeben oder aufgehoben wurde, können Sie nie wieder auf ihn verweisen. Alle Informationen, die sich möglicherweise in diesem Speicher befinden, sind für immer verschwunden. Der Versuch, von einer freien Seite zu lesen oder darauf zu schreiben, führt zu einer Zugriffsverletzungs-Ausnahme. Wenn Sie Informationen benötigen, sollten Sie den Speicher, der diese Informationen enthält, nicht aufheben oder freigeben.

Um anzugeben, dass die Daten in einem Speicherbereich nicht mehr von Interesse sind, rufen Sie VirtualAlloc mit MEM_RESET auf. Die Seiten werden nicht aus der Auslagerungsdatei gelesen oder in diese geschrieben. Der Speicherblock kann jedoch später wieder verwendet werden.