개요
링크드 리스트나, 동적할당, 비트맵 등등을 한번에 마구잡이로 사용하다보면 가끔 자원 해제를 깜빡하여 미아가 되어 메모리 안을 떠도는 경우가 있습니다. 이를 해결해주는 것 중 Visual Leak Detector for Visual C++(이하 VLD)라는 유용한 라이브러리가 있습니다. 단순하게 프로젝트에 라이브러리를 추가해 주고, 헤더를 인클루드하면 디버깅 모드에서 메모리누수가 날 때 Output창에 출력해주는 것을 토대로 소스를 고쳐나가면 됩니다.
설치방법
공식사이트(https://vld.codeplex.com/) 에서 Downloads메뉴에 들어간 후, 원하는 버전을 다운받습니다.
파일을 다 다운받았다면 적당히 설치해 줍니다.
설치가 끝나면, VS에서 원하는 프로젝트를 열고, Project메뉴를 열고 Properties를 엽니다.
메뉴를 열고, VC++ Directories를 클릭합니다.
Include Directories에 VLD의 include폴더를 추가합니다.
Library Directories에 VLD의 lib폴더에서, 자신의 컴퓨터에 맞는 폴더를 선택하여 추가합니다.
사용하기
소스의 #include 부분의 최하단에 vld.h를 인클루드합니다.
디버그를 하면 누수가 생길 때 마다 위와 같이 Output 창에 누수 위치와 상세 정보가 출력됩니다.
누수가 없으면 이렇게 출력됩니다.
이 엄청난 누수를 어떻게 해결할까 힘들었는데, 해결하고 아무 누수가 없다는 글을 보니 기분이 상쾌해지네요.:)
+.덧붙임
릴리즈 모드와 디버그 모드를 구분해 사용하려면, VLD를 인클루드해주는 부분을 이렇게 수정합니다.
'Programming > C&C++' 카테고리의 다른 글
[디자인패턴/C++] Singleton (0) | 2014.10.20 |
---|---|
[C++] 부모 클래스에서 자식 클래스의 함수를 호출(가상 함수) (2) | 2014.02.27 |
[C] 라이브러리 호출 (0) | 2013.08.06 |
[C] strftime 함수(시간->문자열) (0) | 2013.08.04 |
[C] printf 디버깅 대박 팁 (0) | 2013.06.21 |