2 min read

Visual Leak Detector을 이용한 메모리 누수 탐지법

C++을 하다보면 어쩔수 없이 생기는 것이 메모리누수입니다.

물론 최근에는 스마트포인터같은게 있다고 하지만 아직도 어쩔수없이 동적할당을 스마트포인터를 통해서 할당을 하지않습니다.

그러다보니 메모리누수는 당연시 여깁니다. 이를 방지하기 위해 C++ msdn에서도 메모리누수를 확인하는법에 관해 적혀있습니다.

https://docs.microsoft.com/ko-kr/previous-versions/974tc9t1(v=vs.120)

하지만 이와 별개로 좀더 자세히 알고싶을때가 있습니다. 그래서 여러 메모리누수탐지 라이브러리가 있는데 대표적으로 Visual Leak Detector입니다.

https://kinddragon.github.io/vld/

해당 라이브러리는 사용법은 vld라는 헤더파일만 입력만 해주면됩니다.

그리고 디버그모드로 컴파일을 하게되면 프로그램이 끝날때 어디부분이 메모리할당이 일어났고 어떤 데이터가 있는지 쉽게확인할수 있습니다.

#include <vld.h>
#include <iostream>

int main()
{
	char * str= new char[100];

	std::memcpy(str, "test", 10);
}

간단한 예제로 다음과 같은 소스를 실행해보았습니다.

얼마나 할당했는지 어떤 데이터가 누수가 발견했는지 프로그램이 끝날때 발견할수 있습니다.