#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 |