본문 바로가기
기술자료/Win32 MFC WinCE

실행 가능한 메모리의 동적 할당 VirtualAlloc Memory area code/text data stack bss heap

by 와이즈캣 2020. 10. 8.
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