2018년 11월 10일 토요일

Visual Studio에서 메모리 누수 확인하기


Visual Studio에서 메모리 누수를 확인하려면 다음과 같이 new를 재정의 한다.

    #ifdef _DEBUG
    #define new DEBUG_NEW
    #endif

DEBUG_NEW로 할당한 메모리를 해제하지 않으면 Output 창에 다음과 같은 에러 메시지가 나온다.

    Detected memory leaks!
    Dumping objects ->
    {10} normal block at 0x12345678, 4 bytes long.
     Data: <  > CD CD CD CD
    Object dump complete.

0x12345678에서 누수가 발생했다고 나오지만, 이것만 봐선 어디에서 메모리 누수가 생겼는지 확인하기 어렵다.
메시지 맨 앞의 {10}은 메모리 할당 순서이다. 따라서 10번째 할당된 변수가 무엇인지 확인하면 된다.

    _CrtSetBreakAlloc(10);

코드 맨 처음 부분에 위와 같이 적어주면 10번째 메모리 할당에서 브레이크가 걸린다.