레이블이 Memory Leak인 게시물을 표시합니다. 모든 게시물 표시
레이블이 Memory Leak인 게시물을 표시합니다. 모든 게시물 표시

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번째 메모리 할당에서 브레이크가 걸린다.