_CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF);
//일단 이렇게 해놓으면 메모리가 센다는 것만 알수있는게 대부분이고 자세한 중단점을 얻으려면 예상되는 곳에 이것을 작성해야한다
_CrtSetBreakAlloc( 생성 번째 번호 ); //으로 세는 번호를 써서 해당 지점을 잡는다
http://blog.naver.com/jungwan82/20080829101
msdn에 보면
#define _CRTDBG_MAP_ALLOC
#include <stdlib.h>
#include <crtdbg.h>
위와 같이 정의하고 포함한 후에 프로그램의 종료 지점에서 _CrtDumpMemoryLeaks(); 함수를 실행하면 메모리 릭이 발생한 지점을 알려준다고 나와있습니다. 또한 종료지점이 여러군데라서 _CrtDumpMemoryLeaks();를 사용하기가 곤란할 경우에는 프로그램의 시작 지점에 _CrtSetDbgFlag ( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF ); 함수를 실행하는 것으로 대체할 수 있다고 합니다.
그런데 종료지점에도 _CrtDumpMemoryLeaks() 함수를 실행하고 시작지점에도 _CrtSetDbgFlag ( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF ) 함수를 실행하면 어떻게 될까요?
발생하지도 않은 메모리 릭을 보고합니다. 사람 고생시키는 경우입니다.
'디버깅 & 스킬 > 디버깅 & VS Debugging' 카테고리의 다른 글
Visual Leak Detector for Visual C++ 2008/2010/2012 (0) | 2012.11.24 |
---|---|
Visual Leak Detector 메모리릭 감지프로그램 vs2008 이하(포함) 으로 됨 (0) | 2012.11.23 |
메모리주소의 의미 (0) | 2012.11.23 |
메모리 누수 없는 코드 만들기 (0) | 2012.11.23 |
0xC0000005 오류 (0) | 2012.11.23 |