Jak używać _CrtDumpMemoryLeaks()

Jak używać _CrtDumpMemoryLeaks()

Pobierz próbkę z poniższego linku. Musisz ustawić następujące parametry, aby skierować wyjście do konsoli.

   // Send all reports to STDOUT
   _CrtSetReportMode( _CRT_WARN, _CRTDBG_MODE_FILE );
   _CrtSetReportFile( _CRT_WARN, _CRTDBG_FILE_STDOUT );
   _CrtSetReportMode( _CRT_ERROR, _CRTDBG_MODE_FILE );
   _CrtSetReportFile( _CRT_ERROR, _CRTDBG_FILE_STDOUT );
   _CrtSetReportMode( _CRT_ASSERT, _CRTDBG_MODE_FILE );
   _CrtSetReportFile( _CRT_ASSERT, _CRTDBG_FILE_STDOUT );

Po wyszukaniu, dlaczego to nie działa w moim kodzie, znalazłem następujące punkty:

  • Jeśli nie wykryto wycieku, ta metoda nic nie drukuje.
  • Nie dotyczy to wszystkich metod alokacji. Na przykład CoTaskMemAlloc nie mają wpływu.
  • Ostrzeżenie musi być włączone w _CrtSetReportMode i _CrtSetReportFile .