MFC-C++
대용량 메모리 할당 Massive Memory Alloc
MuTa
2016. 5. 27. 09:02
32bit app에서 메모리 할당 하는 것은 최대 4GB
허나 실질 할당 가능 부분은 2GB 이하이다.
프로젝트>설정>링커>시스템>큰 주소 처리를 사용으로 바꿔야 한다.
3GB 까지 가능하다고 한다.
그 이상 쓰려면 VirtualAlloc 이나 MMF 를 사용하는 것이 좋다.
허나 64bit 프로그램 64bit OS 환경에서 다음과 같이 할당 가능하다.
#define GB 1073741824 //1024*1024*1024
SIZE_T BigSize = GB*(SIZE_T)8; //할당 크기 8GB
BYTE* pByte = new BYTE[BigSize];
for (SIZE_T i = 0; i < BigSize ; i++)
pByte[i] = i%255;
for (SIZE_T i = 0; i < BigSize ; i++)
if ((i % 100000) == 0) TRACE(_T("%lld %d \n"), i, pByte[i]);
delete[] (pByte);
pByte = NULL;
스샷은 32GB 램
PC 에서 25GB 할당 결과 이다.
할당 전
할당 상태
해제 후
TRACE 문으로 안쪽 내역 확인 가능