본문 바로가기

C++

[C++] 메모리 누수 체크

#define _CRTDBG_MAP_ALLOC 
#include <crtdbg.h>

#ifdef _DEBUG // 메모리 누수 위치 알려줌
#define new new ( _NORMAL_BLOCK , __FILE__ , __LINE__ )
#endif

int main() {
	_CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF);	// 메모리 누수 체크

	int* pi = new int;
	*pi = 123;
	//delete pi;

	return 0;
}

위와 같이 new로 메모리를 할당하고 해제하지 않을 경우 메모리 누수가 발생한다.

crtdbg.h를 이용하면 메모리 누수를 체크 할 수 있다.

 

디버그 출력창

디버그를 실행하면 디버그 출력 창에 메모리 누수를 감지했다고 출력하고

new를 디버그용으로 define할 시에 메모리 누수 위치를 출력한다.

(11)이 코드에서 메모리 누수 발생 위치이고 {89}는 메모리 할당 번호, 0x00786..은 16진수 메모리 주소이다.

'C++' 카테고리의 다른 글

[C++] 포인터와 레퍼런스의 차이  (0) 2021.12.21
[C++] 생성자에서 포함된 객체 초기화  (0) 2021.12.20
[C++] 후위연산자  (0) 2021.12.19
[C++] vector vs list  (0) 2021.12.19
[C++] iterator  (0) 2021.12.19