место чтения нарушения прав доступа 0xfeef002A - PullRequest
0 голосов
/ 14 марта 2012

Как посмотреть в visual studio, к какому адресу одновременно обращаются и откуда-то еще?

в чем могут быть причины, по которым нарушение прав доступа является причиной?

1 Ответ

2 голосов
/ 14 марта 2012

Это выглядит очень близко к одному из специальных значений , используемых кучи отладки во время выполнения Visual Studio. Существует ряд значений, которые среда выполнения C использует после выделения и освобождения памяти, чтобы можно было легче диагностировать ошибки повреждения памяти. Значение 0xFEEEFEEE используется после освобождения памяти.

Я подозреваю, что в вашем коде может происходить то, что объект был освобожден, но у вас все еще есть указатель на него ( висячий указатель ), и вы пытаетесь получить доступ к переменной-члену этого объекта. объект. Есть несколько вещей, которые вы можете сделать, чтобы диагностировать эту проблему, в зависимости от сложности вашего кода. Одним из них является включение Проверка кучи страницы , а другим - добавление некоторых точек останова в деструкторе класса, на который делается разыменование, поэтому выясните, где уничтожается объект, чтобы вы могли сбросить другие указатели, которые ссылаются на него. Это. Подумайте об использовании интеллектуальных указателей, таких как shared_ptr<>, чтобы уменьшить вероятность висячих указателей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...