아래 프로그램을 돌려보면 릭이 잡히기도 하고 안잡히기도 한다, 즉 프로그램 내에서 _CrtSetDbgFlag 으로는 한계가 있다는 것을 알 수 있다
#include <windows.h>
#include <crtdbg.h>
#include <process.h>
#include <iostream>
UINT WINAPI ProcessIO(LPVOID lpParameter)
{
int* p = new int;
return 0;
}
int _tmain(int argc, _TCHAR* argv[])
{
_CrtSetDbgFlag( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF );
UINT ulThreadID = 0;
HANDLE m_hThread = (HANDLE) _beginthreadex (NULL, NULL, ProcessIO, NULL, NULL, &ulThreadID);
CloseHandle(m_hThread);
WaitForSingleObject( m_hThread, INFINITE );
return 0;
}
http://happyq.egloos.com/3505278
음... 멀티스레드 프로그램에서 효과가 없다는 것은 Crt Debug함수에 대한 설명이었습니다. 그런 경우엔 LeakDiag 등의 다른 방법을 사용해야 합니다. ^^
Visual Leak Detector - Enhanced Memory Leak Detection for Visual C * Visual memory leak detector - 사내양's 개발자 노트 * Native Code에서 Memory Leak을 잡는 방법-1 - Leak Debugging(1) - CRT 디버그함수를 이용한 메모리 누수(Memory Leak) 탐지하기 * Umdh.exe를 사용하여 메모리 누수를 찾는 방법 - Private Bytes는 프로세스에 할당되었지만 다른 프로세스와 공유하지 않는 총 메모리 - Virtual Bytes는 프로세스가 사용하는 가상 주소 공간의 현재 크기를 바이트로 나타낸 것 - Virtual Bytes를 모니터링하여 가상 메모리가 사용되는지 확인* Debugging Tools for Windows (MSDN) - Debugging Tools for Windows - Overview (WHDC)* Leak Debugging(2) - LeakDiag로 메모리 누수 디버깅하기 (Debugging Memory Leak with LeakDiag) - 좋은 툴인 것 같다.
'디버깅 & 스킬 > 디버깅 툴&유틸' 카테고리의 다른 글
visual studio 2013 comunity 비주얼 스튜디오 2013 커뮤니티버전 (0) | 2015.11.01 |
---|---|
[메로리릭툴] MemLeakAnalyse-Tool (with source), Memory(-Leak) and Exception Trace (0) | 2013.05.22 |
디버깅및 메모리 누수 감지 툴들 (0) | 2013.05.22 |
바운즈 체커(bounds checker) 메모리누수 정보 얻는 툴 (0) | 2013.05.07 |
Rational Purify 메모리 누수정보 얻는 툴킷 (0) | 2013.05.07 |