Я пытаюсь использовать обнаружение утечки памяти CRT, но продолжаю получать следующее сообщение в Microsoft Visual Studio: «Обнаружены утечки памяти - пропуск дампа объекта». Я никогда не смогу заставить это сделать и объектный дамп.
Я следовал инструкциям в статье Microsoft об обнаружении утечек памяти (http://msdn.microsoft.com/en-us/library/e5ewb1h3(VS.80).aspx), но не повезло.
В моем stdafx.h (перестроен весь проект):
#define _CRTDBG_MAP_ALLOC
#include <stdlib.h>
#include <crtdbg.h>
В точке входа моей заявки:
_CrtSetDbgFlag ( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF );
Я также надеюсь, что он отобразит имя файла и номер строки в объявленном Microsoft формате:
Detected memory leaks!
Dumping objects ->
C:\PROGRAM FILES\VISUAL STUDIO\MyProjects\leaktest\leaktest.cpp(20) : {18}
normal block at 0x00780E80, 64 bytes long.
Data: < > CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD
Object dump complete.
Хотя мне НИКОГДА не удавалось даже получить дамп объекта, но я заметил, что другие люди говорят, что видят что-то подобное (даже с определенным _CRTDBG_MAP_ALLOC):
Detected memory leaks!
Dumping objects ->
{18} normal block at 0x00780E80, 64 bytes long.
Data: < > CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD
Object dump complete.
На самом деле я не хочу тратить время на переопределение операторов new и delete, поэтому я надеялся, что отладка CRT поможет мне. Если это не сработает, я могу переопределить операторы new и delete, но я действительно хочу получить информацию о распределении с именем файла и номером строки (пересекает пальцы).
Спасибо,
Кирил