메모리 릭 2

C Runtime 환경의 메모리 릭 잡는 방법 ( Memory Leak )

간단히 메모리 릭 발생여부를 알아내고 이를 해결하는 방법에 대해서 알아봅시다. 이는 MS 사에서 CRT(C Runtime) 라이브러리로 제공해는 CRTDBG 를 이용할 겁니다. 생각보다 쉬운 반면 그 기능은 막강하지요. 일단 프로그램 정의부에 다음과 같이 추가합니다. #include #define CRTDBG_MAP_ALLOC #ifdef _DEBUG #define new new( _NORMAL_BLOCK, __FILE__, __LINE__ ) //궁금하시면 제 게시글 중 편을 보세요. #endif 이제 메인 진입 부 처음에 다음과 같이 선언합니다. 일반 main() 이라고 가정합니다. 물론 WinMain() 일 수도 있습니다. void main() { _CrtSetDbgFlag( _CRTDBG_ALLO..

메모리 릭(메모리 유출, memory leak)을 잡아보자

많은 프로그래머들이 프로그램을 짜면서... 메모리 릭을 많이 발생시킵니다.. 대수롭지 않게 생각하는 프로그래머들이 많은데.. 실상은 가장 심각한 버그 중에 하나입니다.. 당부 말씀드리자면... 제발 그러지 말아 주세요.. ㅎㅎ 그럼 메모리 릭을 어떻게 잡아야할까요.. 코드 짤때부터 새지 않도록 짜는게 중요하지만.. 인간인 이상 완벽할 수 없습니다.. 그럴땐 도움을 받아야 합니다.. 다음 코드 보시죠.. #include #ifdef _DEBUG #define new new(_CLIENT_BLOCK, __FILE__, __LINE__) #endif void main() { _CrtSetDbgFlag( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF ); int* a = new..