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