본문 바로가기

My Study/Function

VirtualFree

BOOL WINAPI VirtualFree(
  __in  LPVOID lpAddress,
  __in  SIZE_T dwSize,
  __in  DWORD dwFreeType
);

VirtualAlloc에 반대되는 함수이다. VirtualAlloc 함수가 정해 놓은 상태로 되돌리는 역할을 한다. malloc과 free함수 관계

lpAddress : 해제할 메모리 공간의 시작 주소를 지정한다.
dwSize : 해제할 메모리 크기를 바이트 단위로 지정한다.

dwFreeType : MEM_DECOMMIT과 MEM_RELEASE중 하나를 지정할 수 있다.


 MEM_RELEASE를 지정할 경우 해당 페이지는 FREE상태가 된다. 

물리적 메모리가 할당되어 있다면 해당 메모리는 반환된다.

주의할 사항은 MEM_RELEASE 전달 시 두 번째 전달인자 dwSize는 반드시 0이어야 하고, 

 lpAddress의 값은 VirtualAlloc 함수 호출을 통해 예약된 메모리의 시작 번지가 되어야 한다는 것이다.

 예약이 이뤄진 메모리의 일부만 반환하는 것은 불가능하다. MEM_DECOMMIT을 인자로 전달할 경우에는

 해당 페이지의 상태를 RESERVE상태로 되돌리게 된다. 이 경우에도 물리적 메모리가 할당되어 있다면

 해당 메모리는 반환하게 된다.

'My Study > Function' 카테고리의 다른 글

GetCurrentProcess  (0) 2010.02.24
GetCurrentDirectory  (0) 2010.02.24
VirtualQuery  (0) 2010.02.24
VirtualProtect  (4) 2010.02.24
VirtualAlloc  (0) 2010.02.24