개발 이야기/개발툴 및 기타 이야기

Memory Leak 찾아내기

가끔.하늘 가온아 2009. 10. 16. 08:52
반응형

VSI 상에서 기본적인 메모리 릭 찾기 방법은 아래와 같은 것이 있습니다.

_CrtSetDbgFlag( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF );


이 코드를 프로그램 시작 위치에 기록 한 후 메모리 릭이 발생하면 출력창에 아래 예와 비슷한 결과를 보실 수 있습니다. 

================================
normal block at 0x0433A1E0, 32 bytes long.
 Data: <                > 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
normal block at 0x04338220, 28 bytes long.
 Data: <8Y              > 38 59 99 04 FF FF FF FF 00 00 00 00 00 00 00 00 
normal block at 0x0433A160, 64 bytes long.
 Data: <                > 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
normal block at 0x0433A070, 176 bytes long.
 Data: <` 3     $ S   3 > 60 A1 33 04 00 00 00 00 24 8B 53 01 E0 A1 33 04 
e:\work\code\common\wtl_util\cwwdragdrop.h(706) : normal block at 0x04335EA8, 76 bytes long.
================================

그럼 위 텍스트 중   라는 숫자를 

_CrtSetDbgFlag( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF );아래 위치 정도에 _CrtSetBreakAlloc(26542); 라고 적도 다시 빌드하여 실행하시면 해당 위치에서 브레이크가 거립니다. 


그리고 유명한 릭 찾기 라이브러리 vld(http://www.codeproject.com/KB/applications/visualleakdetector.aspx)가 있습니다.






반응형