Как использовать _CrtDumpMemoryLeaks ()

Я пытаюсь использовать _CrtDumpMemoryLeaks () для отображения утечек памяти в моих программах.

Но это ничего не отображает за исключением возврата 0 в случае никаких утечек памяти и 1 в случае, если существует утечка.

Ссылка здесь показывает, что вывод должен быть похожим:

Detected memory leaks!
Dumping objects ->
D:\VisualC++\CodeGuru\MemoryLeak\MemoryLeak.cpp(67) : {60} 
normal block at 0x00324818, 4 bytes long.
Data: <,   > 2C 00 00 00 
Object dump complete.

Может любой предлагать корректный способ использовать эту функцию.

11
задан pankajt 28 January 2010 в 10:31
поделиться

2 ответа

Загрузите образец из следующего Link . Вы должны установить следующие параметры для прямого вывода на консоль.

   // 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 );
18
ответ дан 3 December 2019 в 05:34
поделиться

После поиска причин, по которым это не работает в моем коде, я обнаружил следующие моменты:

  • Если утечки не обнаружено, этот метод ничего не выводит.
  • Не все методы распределения затронуты. Например, CoTaskMemAlloc не затронуты.
  • Предупреждение должно быть включено с _CrtSetReportMode и _CrtSetReportFile.
3
ответ дан 3 December 2019 в 05:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: