Сбой при нарушении векторного доступа VC ++ 6.0.Известная ошибка?

StackOverflow https://stackoverflow.com/questions/608228

  •  03-07-2019
  •  | 
  •  

Вопрос

Я пытаюсь использовать std::vector<>:: const_iterator и я получаю сбой "нарушение доступа".Похоже, что код std::vector выходит из строя, когда он использует свой собственный внутренний First_ и Last_ указатели.Предположительно, это известная ошибка.Я надеюсь, что кто-нибудь сможет указать мне правильное решение.Вероятно, имеет значение, что функция сбоя вызывается из внешней библиотеки?

const Thing const*  AClass::findThing (const std::string& label) const
{
    //ThingList_.begin() blows up at run time.  Compiles fine.
    for (std::vector<Thing*>::const_iterator it = ThingList_.begin(); it != ThingList_.end(); ++it) {
        //Irrelevant.
    }
    return 0;
}

Просто зову ThingList_.size() тоже вылетает.

Это sp6, если это имеет значение.

Это было полезно?

Решение

Если вы передаете объекты C ++ через внешние границы библиотеки, вы должны убедиться, что все библиотеки используют одну и ту же библиотеку времени выполнения (в частности, один и тот же распределитель кучи).На практике это означает, что все библиотеки должны быть связаны с DLL-версией MSVCRT.

Другие советы

Это почти наверняка ошибка в вашем коде, а не std::vector.Этот код используется слишком многими проектами, чтобы иметь такую простую в повторении ошибку.

Вероятно, происходит то, что переменная ThnigList_ была каким-то образом повреждена.Был ли получен прямой доступ к базовому массиву и / или изменен?

Я согласен с Джаредом, что это, вероятно, есть в вашем коде, тем не менее, вы должны быть уверены, что ваши библиотеки stl обновлены.

Тот Самый посуда для столовой посуды на сайте есть исправленные файлы, которые вам нужны.

Вы должны обновиться на всякий случай

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top