dwSize는 그 주소에서 확정한 일부를 해제하기 위한 사이즈 (3번째 인자 MEM_DECOMMIT)
dwFreeType은 MEM_DECOMMIT은 일부만 해제하는 것이고 MEM_RELEASE는 전부 해제하는 것
MEM_RELEASE할때 2번째 인자 dwSize는 0을 줘야 한다.
가상 메모리를 100바이트만 할당해달라고 요청하면 실제로는 1페이지 (4K의 배수)를 할당해 준다 만약 4091의 크기를 가진 구조체 5개를 할당 받는다고 가정했을 때, 5개를 미리 MEM_RESERVE로 예약하고 MEM_COMMIT으로 인덱스 기준 1번째 메모리를 확정 후 접근했을 때
예약한 가상 메모리 | 4096 | 4096 | 4096 | ... 구조체 배열 메모리 | 4091 | 4091 | 4091 | ↑
이렇게 되면 구조체 배열 메모리의 1번 인덱스가 페이지 0~1 사이에 걸리게 된다. 그러면 운영체제는 실제로 페이지 2개를 할당한다 (4096 * 2)
댓글