기술자료/Win32 MFC WinCE
실행 가능한 메모리의 동적 할당 VirtualAlloc Memory area code/text data stack bss heap
와이즈캣
2020. 10. 8. 22:15
728x90
반응형
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
#include <windows.h>
#include <stdio.h>
#define PROGRAM_SIZE 0x10000 // 적재할 프로그램의 최대 크기 : 64Kbyte
#define PAGENUM (1024*314) // 시스템 최대값 테스트(314를 수정)
int main()
{
LPVOID vpMem;
SYSTEM_INFO stSysInfo;
DWORD MemorySIze;
GetSystemInfo(&stSysInfo);
#if 1
MemorySIze = stSysInfo.dwPageSize * PAGENUM; // 시스템 최대값 테스트
#elif 1
MemorySIze = stSysInfo.dwPageSize * 16; // 64Kbyte 할당
#else
MemorySIze = PROGRAM_SIZE; // 64Kbyte 할당
#endif
printf("PageSize = %u Kbytes\n", stSysInfo.dwPageSize/1024);
printf("MemorySIze = %u Kbytes\n", MemorySIze/1024);
vpMem = VirtualAlloc(NULL, MemorySIze, MEM_RESERVE | MEM_COMMIT, PAGE_EXECUTE_READWRITE);
if (vpMem != NULL)
{
printf("VirtualAlloc 호출 성공\n");
}
else
{
printf("VirtualAlloc 호출 실패 및 종료\n");
return 0;
}
memset(vpMem, 0xEE, MemorySIze);
if (VirtualFree(vpMem, 0, MEM_RELEASE)) // decommit & release
{
printf("decommit & release 완료\n");
}
else
{
printf("MEM_RELEASE 실패\n");
}
return 0;
}
|
728x90