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 문으로 안쪽 내역 확인 가능