Visual C++ 어플리케이션에서 메모리 누수 추적하는 방법
흔히 기본으로 debug 모드에서 DEBUG_NEW 를 사용하면 application 종료시 메모리 릭을 검사해 줍니다.
http://support.microsoft.com/kb/601929/ko?spid=3003&sid=308
위 URL을 참고 하시면 됩니다.
그러나 output 창에서 아래와 같이 약간은 보기 힘든 형태로 결과를 제공합니다.
그러나
Visual Leak Detector - Enhanced Memory Leak Detection for Visual C++ 를
사용하시면 아래 스크린 샷처럼 어떤 부분에서 메모리 해제가 안되었나를
쉽게 알 수 있습니다.
free tool로서 라이브러리 파일을 소스 폴더에 같이 넣고, 헤더 파일을 하나만 include 하시면 쉽게 사용할 수 있습니다.
http://www.codeproject.com/tools/visualleakdetector.asp
http://support.microsoft.com/kb/601929/ko?spid=3003&sid=308
위 URL을 참고 하시면 됩니다.
그러나 output 창에서 아래와 같이 약간은 보기 힘든 형태로 결과를 제공합니다.
Detected memory leaks!
Dumping objects ->
plex.cpp(31) : {173587} normal block at 0x03C02F00, 124 bytes long.
Data: < P j > 00 00 00 00 00 00 00 00 C0 50 13 00 A8 6A 14 00
map_pp.cpp(72) : {173586} normal block at 0x03C02FB0, 68 bytes long.
Data: < > 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
{67576} normal block at 0x04021A80, 288 bytes long.
Data: < L_ > 01 00 00 00 00 00 00 00 14 CB 4C 5F 01 00 CD CD
{67575} normal block at 0x04021BD0, 288 bytes long.
Data: < L_ > 01 00 00 00 00 00 00 00 14 CB 4C 5F 01 00 CD CD
{63195} normal block at 0x03CB85E0, 124 bytes long.
Data: < x J_ x J_> 0F 00 00 00 78 C2 4A 5F 19 08 05 96 78 C2 4A 5F
strcore.cpp(118) : {56689} normal block at 0x03C4CB00, 19 bytes long.
Data: < > 01 00 00 00 06 00 00 00 06 00 00 00 B0 C5 B7 A1
strcore.cpp(118) : {56679} normal block at 0x03C4B170, 19 bytes long.
Data: < > 01 00 00 00 06 00 00 00 06 00 00 00 C1 D6 B0 A1
Object dump complete.
The thread 0xDE has exited with code 0 (0x0).
The program 'E:\Wow\BinD\Wow.exe' has exited with code 0 (0x0)
Dumping objects ->
plex.cpp(31) : {173587} normal block at 0x03C02F00, 124 bytes long.
Data: < P j > 00 00 00 00 00 00 00 00 C0 50 13 00 A8 6A 14 00
map_pp.cpp(72) : {173586} normal block at 0x03C02FB0, 68 bytes long.
Data: < > 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
{67576} normal block at 0x04021A80, 288 bytes long.
Data: < L_ > 01 00 00 00 00 00 00 00 14 CB 4C 5F 01 00 CD CD
{67575} normal block at 0x04021BD0, 288 bytes long.
Data: < L_ > 01 00 00 00 00 00 00 00 14 CB 4C 5F 01 00 CD CD
{63195} normal block at 0x03CB85E0, 124 bytes long.
Data: < x J_ x J_> 0F 00 00 00 78 C2 4A 5F 19 08 05 96 78 C2 4A 5F
strcore.cpp(118) : {56689} normal block at 0x03C4CB00, 19 bytes long.
Data: < > 01 00 00 00 06 00 00 00 06 00 00 00 B0 C5 B7 A1
strcore.cpp(118) : {56679} normal block at 0x03C4B170, 19 bytes long.
Data: < > 01 00 00 00 06 00 00 00 06 00 00 00 C1 D6 B0 A1
Object dump complete.
The thread 0xDE has exited with code 0 (0x0).
The program 'E:\Wow\BinD\Wow.exe' has exited with code 0 (0x0)
그러나
Visual Leak Detector - Enhanced Memory Leak Detection for Visual C++ 를
사용하시면 아래 스크린 샷처럼 어떤 부분에서 메모리 해제가 안되었나를
쉽게 알 수 있습니다.
free tool로서 라이브러리 파일을 소스 폴더에 같이 넣고, 헤더 파일을 하나만 include 하시면 쉽게 사용할 수 있습니다.
http://www.codeproject.com/tools/visualleakdetector.asp

"프로그래밍 / TIP& Study" 분류의 다른 글
| [퀴즈] SQLite collate 문제 (0) | 2010/07/16 |
| [TIP] XP, Vista에서 CD/DVD롬이 보이지 않을 경우 (1) | 2009/08/05 |
| [C#] WinForm 에서 Docking 순서 변경하기 (0) | 2009/07/29 |
| [WPF] InkCanvas 사용하기 (0) | 2009/06/29 |
| [C#] Control Library 만들 때 TIP (0) | 2009/06/26 |
| [C#] 자연스럽게 Pen으로 그리기 (0) | 2009/06/23 |
| [WPF] Canvas의 Width, Height Binding (0) | 2009/06/23 |
| [C#] DateTime으로 7일 후는 어떻게? (0) | 2009/06/23 |
프로그래밍/TIP& Study
2006/08/26 13:53

댓글을 달아 주세요