여기에서 MFC 기반으로 사용된 가용 메모리 확보를 알아 보았습니다.
하지만 MFC를 쓰지 않고 사용 하는 방법을 알아 보겠습니다.
일단 코드 부터 확인 하겠습니다.
#include <new> MEMORYSTATUSEX status; status.dwLength = sizeof(status); GlobalMemoryStatusEx(&status); UINT nUsageMemSize = status.ullAvailVirtual; double fMemPercent = 0.0; while (true) { LPBYTE lpChk = new (std::nothrow) BYTE[nUsageMemSize]; if (lpChk == nullptr) { fMemPercent = fMemPercent == 0.0 ? 0.1 : fMemPercent*0.1; nUsageMemSize = (UINT)(status.ullAvailVirtual * fMemPercent); if (nUsageMemSize < nMinBuff) nUsageMemSize = nMinBuff; } else { delete[] lpChk; break; } }
<위 코드는 Visual Studio 2013 Window 10 64bit에서 테스트 하였습니다>
기존의 포스팅 된 내용은 try catch 를 이용하여 처리를 하였는데 위 처리 방법은 std::nothrow 를 이용하여
exception 을 발생 시키지 않는 데신 메모리를 할당할수 없으면 nullptr 을 리턴 하는 점 입니다.
그 이후 처리 방법은 이전 포스팅을 보시면 될거 같네요 ^^
댓글 없음:
댓글 쓰기