LPVOID VirtualAlloc( LPVOID lpAddress, SIZE_T dwSize, DWORD flAllocationType, DWORD flProtect );
 
LPVOID VirtualAllocEx( HANDLE hProcess, LPVOID lpAddress, SIZE_T dwSize, DWORD flAllocationType, DWORD flProtect );
 
함수 원형에서 확인 가능하듯이 차이점은 프로세스 핸들이 인자로 들어가느냐 안들어가느냐에 있다.
 
다시말해 VirtualAlloc 함수는 내 프로세스에, VirtualAllocEx 함수는 타 프로세스에도 메모리 공간을 할당할 수 있다.
 
[인자 설명]
LPVOID lpAddress
  • 할당할 메모리의 절대주소
  • NULL을 인자로 주면 시스템에서 알아서 할당
 
SIZE_T dwSize
  • 할당할 메모리의 크기
  • NULL을 인자로 주면 하나의 페이지 크기만큼 할당
 
DWORD flAllocationType
  • 할당 방법 지정
  • MEM_COMMIT : 물리 메모리의 할당을 확정
  • MEM_RESERVE : 물리 메모리의 할당 없이 예약만 한다
  • ETC : 나머지 옵션은 MSDN
 
DWORD flProtect
 
Return Value
  • 성공시 할당한 메모리 주소를 반환
  • 실패시 NULL 반환
 

'C&C++' 카테고리의 다른 글

WINAPI CreateProcess Suspend State  (0) 2019.07.11
Incremental Linking  (0) 2019.07.10
Features And Uses Of STL Container In C++  (0) 2018.11.04
Modern C++  (1) 2018.10.02
WINAPI How To Load Windows Tray Icon  (0) 2018.09.08

+ Recent posts