Визуальный детектор утечек, бросающий "Место для обнаружения нарушения доступа" на ntdll.dll

Когда я включаю:

#include <vld.h>;

в моем stdafx.h и запустите мою программу, он говорит, что установлен Visual Leak Detector 2.5. Я могу запустить свою программу просто отлично, но когда она выйдет, я получаю эту ошибку:

Exception thrown at 0x00007FFFB7F57FE7 (ntdll.dll) in CPPAssessment.exe: 0xC0000005: Access violation reading location 0x00007FFFB8095252.

If there is a handler for this exception, the program may be safely continued.

Но я получаю только это, когда включаю Visual Leak Detector, поэтому я предполагаю, что это проблема.

Тем не менее, я нашел этот сайт: Визуальный форум детекторов утечек И кто-то упоминает об исправлении, но он приводит к реестру github с файлом vld.cpp, и я не знаю, я знаю, что с ним делать.

Кажется, ошибка была вызвана обновлением Windows 10, но я не уверен.

Ответ 1

Выпущен VLD 2.5.1, в котором исправлена ​​ошибка для окон 10. https://vld.codeplex.com/releases/view/630509

Я ждал этого некоторое время. Благодаря команде VLD

Ответ 2

Если вам действительно не нужно использовать vld для обнаружения утечек памяти, Dr. Memory - это вариант, он отлично работает для меня в Windows, как Valgrind.

Ответ 3

Некоторые API Windows выделяют свою собственную память для обработки некоторых внутренних данных. Вероятно, вы пытаетесь объединиться с такой памятью.

В Visual Studio перейдите в DEBUG > Исключения... и добавьте "Исходные проверки времени выполнения". Ваш код сломается, когда вы возитесь с памятью. Посмотрите, где вы находитесь в стеке вызовов, и исследуйте свою последнюю модификацию памяти.

Я использую VLD годами, и иногда это выглядит странно, но это всегда точно. В случае сомнений посмотрите документацию в MSDN, чтобы убедиться, как обрабатывать память.