Browse Source

Programmatically check no leaks are reported in the VC++ debug heap

Dmitry-Me 8 years ago
parent
commit
ed78570c66
1 changed files with 9 additions and 0 deletions
  1. 9 0
      xmltest.cpp

+ 9 - 0
xmltest.cpp

@@ -292,6 +292,10 @@ int main( int argc, const char ** argv )
 		_CrtMemCheckpoint( &startMemState );
 		_CrtMemCheckpoint( &startMemState );
 		// Enable MS Visual C++ debug heap memory leaks dump on exit
 		// Enable MS Visual C++ debug heap memory leaks dump on exit
 		_CrtSetDbgFlag(_CrtSetDbgFlag(_CRTDBG_REPORT_FLAG) | _CRTDBG_LEAK_CHECK_DF);
 		_CrtSetDbgFlag(_CrtSetDbgFlag(_CRTDBG_REPORT_FLAG) | _CRTDBG_LEAK_CHECK_DF);
+		{
+			int leaksOnStart = _CrtDumpMemoryLeaks();
+			XMLTest( "No leaks on start?", FALSE, leaksOnStart );
+		}
 	#endif
 	#endif
 
 
 	{
 	{
@@ -1854,6 +1858,11 @@ int main( int argc, const char ** argv )
 		_CrtMemState diffMemState;
 		_CrtMemState diffMemState;
 		_CrtMemDifference( &diffMemState, &startMemState, &endMemState );
 		_CrtMemDifference( &diffMemState, &startMemState, &endMemState );
 		_CrtMemDumpStatistics( &diffMemState );
 		_CrtMemDumpStatistics( &diffMemState );
+
+		{
+			int leaksBeforeExit = _CrtDumpMemoryLeaks();
+			XMLTest( "No leaks before exit?", FALSE, leaksBeforeExit );
+		}
 	#endif
 	#endif
 
 
 	printf ("\nPass %d, Fail %d\n", gPass, gFail);
 	printf ("\nPass %d, Fail %d\n", gPass, gFail);