본문 바로가기
Programming/Win_API

윈도우즈 API - 메모리 관련 함수2 (GetProcessHeap, HeapAlloc, HeapFree, HeapCreate)

by bbolmin 2012. 9. 11.

 


 

 

HANDLE GetProcessHeap(VOID)
LPVOID HeapAlloc(HANDLE hHeap, DWORD dwFlags, DWORD dwBytes);

BOOL HeapFree(HANDLE hHeap, DWORD dwFlags, LPVOID lpMem);

HANDLE HeapCreate(DWORD flOptions, DWORD dwInitialSize, DWORD dwMaximumSize);

 


 

 

가상 메모리 할당은 페이지 단위로 할당되어서 4K 바이트씩 할당되지만 힙 메모리 할당은 10여 바이트 정도를 단위로 할당한다. 따라서 작은 바이트를 할당할 때는 힙 메모리 할당을 사용하는 것 효율적이다.

 

 

프로세스가 처음 만들어질 때 1M의 디폴트 힙이 만들어진다. 이 디폴트 힙의 핸들을 가져오는 함수가 GetProcessHeap()이다.

 

 

 

 

- GetProcessHeap : 디폴트 힙의 핸들값 반환

 

 

 

- HeapAlloc : 힙 메모리 할당

 

 

 

- HeapFree : 힙 메모리 반환

 

 

 

HeapCreate : 디폴트 힙이 아닌 새로운 힙 할당

 

 

 

 

+

LPVOID HeapReAlloc(HANDLE hHeap, DWORD dwFlags, LPVOID lpMem, DWORD dwBytes); : 힙 메모리 재할당

DWORD HeapSize(HANDLE hHeap, DWORD dwFlags, LPCVOID lpMem); : 할당된 힙의 크기를 조사