Из-за чего указатель VTable может быть 0xdddddddd в отладочной сборке Win32?

Я отлаживаю дефект и сузил его до указателя vtable для объекта, являющегося 0xdddddddd . Этот ответ указывает на то, что отладочные сборки Win32 обычно устанавливают мертвую память или память, которая была удалена, на это особое значение.

Обратите внимание, что указатель сам по себе выглядит допустимым, это просто указатель vtable , то есть 0xdddddddd .

Вот фрагмент кода:

std::list::const_iterator it;
for (it = myObjects.begin(); it != myObjects.end(); ++it)
{
    IMyObject* pMyObject = *it;
    if (pMyObject == 0)
        continue;

    pMyObject->someMethod(); // Access violation     
}

Если я прерву строку с нарушением доступа и посмотрю pMyObject ,

Есть предложения по дальнейшей отладке?

10
задан Community 23 May 2017 в 12:31
поделиться