catch2/include/internal/catch_leak_detector.cpp

38 lines
924 B
C++
Raw Permalink Normal View History

2017-07-12 14:47:36 +02:00
/*
* Created by Martin on 12/07/2017.
*
* Distributed under the Boost Software License, Version 1.0. (See accompanying
* file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
*/
#include "catch_leak_detector.h"
#include "catch_interfaces_registry_hub.h"
2017-07-12 14:47:36 +02:00
#ifdef CATCH_CONFIG_WINDOWS_CRTDBG
#include <crtdbg.h>
namespace Catch {
LeakDetector::LeakDetector() {
int flag = _CrtSetDbgFlag(_CRTDBG_REPORT_FLAG);
flag |= _CRTDBG_LEAK_CHECK_DF;
flag |= _CRTDBG_ALLOC_MEM_DF;
_CrtSetDbgFlag(flag);
_CrtSetReportMode(_CRT_WARN, _CRTDBG_MODE_FILE | _CRTDBG_MODE_DEBUG);
_CrtSetReportFile(_CRT_WARN, _CRTDBG_FILE_STDERR);
// Change this to leaking allocation's number to break there
_CrtSetBreakAlloc(-1);
}
}
2017-07-12 14:47:36 +02:00
#else
Catch::LeakDetector::LeakDetector() {}
2017-07-12 14:47:36 +02:00
#endif
Catch::LeakDetector::~LeakDetector() {
Catch::cleanUp();
}