2011. 4. 25. 14:50

DLL의 메모리릭을 쉽게 찾아 보기

2009/09/24 - [프로그래밍/Win32] - non-MFC에서 손쉽게 Memory Leak 발견하고 해결하기
을 한번 읽어 보시면 도움이 됩니다.
주로, leak은,
Detected memory leaks!
Dumping objects ->
{2617} normal block at 0x051C2BA0, 16 bytes long.
 Data: <                > 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
{2616} normal block at 0x051C2AB8, 20 bytes long.
 Data: <     +          > 00 00 00 00 A0 2B 1C 05 01 00 00 00 04 00 00 00
Object dump complete.
과 같은 글이 실행 종료후에 보고될 때 확인할 수 있습니다.

이런 경우, 위 발생한 부분인 .exe인 경우에는 확인이 쉽게 가능하지만, MFC가 아닌 dll 같은 경우에는 dll 내부에 leak이 발생하더라도 보고가 안되는 경우가 있습니다. 이런 경우, 아래와 같이 dll main을 수정합니다.


즉, DLL_PROCESS_DETACH에 break point를 걸고 F5하면, 확인할 수 있습니다.
다시 말해, DLL 영역에서의 Leak을 "Detact Memory Leaks! ~" 와 같은 형태로 보고해 줍니다.