У меня есть класс B, который наследует класс A с некоторыми виртуальными функциями.Класс B также имеет виртуальную функцию (foo), которая, кажется, не имеет адреса.Когда я иду с отладчиком, он указывает, что у foo есть адрес 0x00000000
, и когда я пытаюсь войти в него, произойдет сбой с нарушением доступа на 0x00000005
.Если я сделаю эту функцию не виртуальной, включится отладчик и будет работать нормально, пока я не достигну std::vector
.Там, когда я вызываю push_back
, произойдет сбой с тем же нарушением доступа по адресу 0x000000005
при записи некоторых вещей по адресу 0xabababab
, и стек вызовов указывает на блокировку мьютекса в функции вставки.
ПримечаниеЯ не использую никакой другой поток, и инкрементный компоновщик будет зависать каждый раз, когда я компилирую.Только полный линкер успешно создаст исполняемый файл.Компилятор из Visual Studio 2008 pro, и эта проблема начала возникать при удалении неиспользуемых исходных файлов и исходного кода.
К сожалению, мне не удалось вернуться к предыдущему состоянию, чтобы определить изменение, которое его создало.
Как я могу определить источник проблемы, не возвращая весь проект?Также кто-нибудь сталкивался с такой ошибкой, возможно, это может быть той же причиной.