본문 바로가기
프로그래밍/C

[ Visual Studio ] CRT 라이브러리로 메모리 누수 탐지하기

by eteo 2022. 5. 2.

 

 

Visual Studio에서 CRT 라이브러리를 사용해 메모리 누수 탐지하는 방법

 

 

 

 

1. 소스 상단에 아래 지시문을 포함한다.

#define _CRTDBG_MAP_ALLOC
#include <stdlib.h>
#include <crtdbg.h>

 

 

2. 종료지점 직전에 아래 코드를 추가한다.

_CrtDumpMemoryLeaks();

 

 

 

3. F5를 눌러 디버그 모드로 실행 후 종료한다.

 

테스트를 위해 어떤 함수안의 free를 주석처리하고 디버그 모드로 실행한 뒤 그 함수를 호출하고 종료해보았다.

 

 

아래와 같이 메모리 누수가 감지되었다고 뜬다. 

나는 테스트해본거라 어느위치에서 누수가 된건지 알고있지만 모르겠다면

 

 

4. 메인함수 안쪽 상단에 아래 코드를 넣고 매개변수로는 위에서 본 번호인 111을 넣은 뒤 디버그 모드로 다시 실행한다.

_CrtSetBreakAlloc();

그럼 메모리 누수가 발생한 지점에서 멈춘다.

 

 

 

아래 더 자세한 설명이 나와있다.

 

 

https://docs.microsoft.com/ko-kr/visualstudio/debugger/finding-memory-leaks-using-the-crt-library?view=vs-2022 

 

CRT 라이브러리로 메모리 누수 찾기 - Visual Studio (Windows)

C/C++ 디버거 및 CRT(C 런타임 라이브러리)를 통해 메모리 누수를 찾는 방법을 알아봅니다. 포함되는 기술로는 메모리 누수 보고서와 메모리 스냅샷 비교가 있습니다.

docs.microsoft.com