관리 메뉴

기억을 위한 기록들

[CPP] 메모리 누수 찾기 - _CrtDumpMemoryLeaks()함수 본문

C & CPP

[CPP] 메모리 누수 찾기 - _CrtDumpMemoryLeaks()함수

에드윈H 2021. 1. 31. 22:36

위 코드는 빌드하면 아무런 문제도 없다고 나온다.

 

이대로 F5 디버그를 눌러봐도

 

문제는 없어서 정상적으로 실행된다.

 

 하지만 해당 코드는 힙에 메모리를 할당(new)해주고 해제(delete)를 해주지 않아 메모리 누수가 발생되는 코드이다.

 

이런 누수를 체크해주는 라이브러리가 있다.

 

<crtdbg.h> 라이브러리

	_CrtDumpMemoryLeaks(); 

그래서 해당 함수를 추가하고 디버그를 찍어보면,

 

중간에

 

Detected memory leaks! 라는 "메모리 누출 감지됨!" 이라는 말이 보인다. 그 밑에 

그 말외엔 직관적인 힌트를 얻기 힘든데,

 

#if _DEBUG
#define new new(_NORMAL_BLOCK,__FILE__,__LINE__)
#define malloc(s) _malloc_dbg(s,_NORMAL_BLOCK,__FILE__,__LINE__)
#endif

 

해당 코드를 넣어주면

 

 

 

 

위 처럼 12번째 줄에 문제가 생겼다고 알려준다.

 

그리하여 해당 arr변수 메모리 해제를 시켜주고 다시 F5를 눌러보면

 

 

Detected memory leaks 문구는 사라진걸 볼 수 있다.