Я отлаживаю программу MFC и дошел до того, что я пытаюсь найти и устранить утечки памяти. Сначала я попробовал встроенный детектор утечки в VC, но как только я переопределил новый оператор, у меня появилось много проблем с переопределением «new» и ошибками.
Перешел на визуальный детектор утечек. Я запустил его и запустил, и, похоже, он обнаружил утечки, но он не может найти файл и номера строк. Вот как это выглядит:
WARNING: Visual Leak Detector detected memory leaks!
---------- Block 2 at 0x0343F718: 67 bytes ----------
Call Stack:
0x00B88E2F (File and line number not available): program.exe!for__get_vm + 0x1F bytes
0x00B8FC28 (File and line number not available): program.exe!for_rtl_init_wrap_ + 0x118 bytes
f:\dd\vctools\crt_bld\self_x86\crt\src\crt0dat.c (873): MSVCR100D.dll!_initterm
f:\dd\vctools\crt_bld\self_x86\crt\src\crtexe.c (473): program.exe!__tmainCRTStartup + 0xF bytes
f:\dd\vctools\crt_bld\self_x86\crt\src\crtexe.c (371): program.exe!wWinMainCRTStartup
0x7540338A (File and line number not available): kernel32.dll!BaseThreadInitThunk + 0x12 bytes
0x77819F72 (File and line number not available): ntdll.dll!RtlInitializeExceptionChain + 0x63 bytes
0x77819F45 (File and line number not available): ntdll.dll!RtlInitializeExceptionChain + 0x36 bytes
Data:
43 3A 5C 50 72 6F 6A 65 63 74 5C 50 72 6F 70 63 ........ ........
61 6C 63 5C 53 65 6B 6F 6E 64 65 6E 54 72 75 6E ........ ........
6B 5C 77 42 6C 61 64 65 45 64 5C 2E 5C 44 65 62 .Random. .Symbols
75 67 5C 77 42 6C 61 64 65 45 64 2E 65 78 65 00 ........ ........
CD CD CD ........ ........
После проверки часто задаваемых вопросов на веб-сайте Visual Leak Detector (VLD), есть раздел, в котором говорится, что если эта ошибка возникает, то, возможно, VLD не может найти символы отладки, расположенные в programname.pdb, поскольку он должен располагаться рядом с Файл programname.exe. Я проверил (и перестроил), убедившись, что в моем проекте включена опция «Создать символы отладки» и что файл programname.exe создан и помещен рядом с файлом programname.exe в папке отладки.
Тем не менее, я отказываюсь показывать мне номер файла и строки.
Кроме того, в самом верху моего «окна вывода» в Visual Studio я вижу следующую строку:
'Program.exe': Loaded 'C:\Project\Program\Debug\Program.exe', Symbols loaded.
Итак, символы загружены?
Есть идеи?
Спасибо!
Задача ещё не решена.