다음을 통해 공유


가상 메모리 해제

VirtualFree 함수는 다음 규칙에 따라 페이지를 커밋 해제하고 해제합니다.

  • 커밋된 페이지를 하나 이상 커밋 해제하여 페이지 상태를 예약된 페이지로 변경합니다. 페이지를 커밋 해제하면 페이지와 연결된 실제 스토리지가 해제되므로 모든 프로세스에서 할당할 수 있습니다. 커밋된 페이지의 모든 블록을 커밋 해제할 수 있습니다.
  • 하나 이상의 예약된 페이지 블록을 해제하여 페이지 상태를 해제로 변경합니다. 페이지 블록을 해제하면 프로세스에서 예약된 주소 범위를 할당할 수 있습니다. 예약된 페이지는 처음에 VirtualAlloc에서 예약한 전체 블록을 해제해야만 해제할 수 있습니다.
  • 커밋된 하나 이상의 페이지 블록을 동시에 커밋 해제하고 해제하여 페이지 상태를 해제로 변경합니다. 지정된 블록에는 처음에 VirtualAlloc에서 예약한 전체 블록이 포함되어야 하며 모든 페이지는 현재 커밋되어야 합니다.

메모리 블록이 해제되거나 커밋 해제된 후에는 다시는 참조할 수 없습니다. 해당 메모리에 있었을 수 있는 모든 정보는 영원히 사라집니다. 무료 페이지에서 읽거나 쓰기를 시도하면 액세스 위반 예외가 발생합니다. 정보가 필요한 경우 해당 정보가 포함된 메모리를 커밋 해제하거나 해제하지 마세요.

메모리 범위의 데이터가 더 이상 관심이 없도록 지정하려면 MEM_RESET 사용하여 VirtualAlloc을 호출합니다. 페이지를 페이징 파일에서 읽거나 쓸 수 없습니다. 그러나 메모리 블록은 나중에 다시 사용할 수 있습니다.