Ошибка отладочного утверждения в C ++ - PullRequest
0 голосов
/ 14 июля 2010

Это мой первый вопрос по stackoverflow.

Я пытаюсь отладить программу, но когда я пытаюсь ее запустить, она завершается с сообщением об ошибке Отладочное утверждение не удалось, и когда я повторяю попытку отладки, создается точка останова, которая приводит меня к вектор в этой функции

#if _HAS_ITERATOR_DEBUGGING
 _Vector_const_iterator(_Tptr _Ptr, const _Container_base *_Pvector)
  { // construct with pointer _Ptr
  _SCL_SECURE_VALIDATE(_Pvector == NULL || (((_Myvec *)_Pvector)->_Myfirst <= _Ptr && _Ptr <= ((_Myvec *)_Pvector)->_Mylast));
  this->_Adopt(_Pvector);
  _Myptr = _Ptr;
  }

и эта строка

_SCL_SECURE_VALIDATE(_Pvector == NULL || (((_Myvec *)_Pvector)->_Myfirst <= _Ptr && _Ptr <= ((_Myvec *)_Pvector)->_Mylast));

Пожалуйста, предложите, где проблема может быть и где искать. Это какая-то проблема с итератором, который я использую.

Спасибо

Ответы [ 2 ]

2 голосов
/ 14 июля 2010

Я думаю, вы должны опубликовать свой код, но не код подтверждения STL (очевидно, этот не самый простой для изучения:)

В любом случае, это сообщение об утверждении обычно указывает на попытку доступа к неправильному индексу (вне границ) или на аналогичную операцию записи в вашем std::vector или какой-либо оболочке вокруг него.

Это также может быть вызвано сохранением итераторов, которые становятся недействительными после, например, после последовательности вставок.

0 голосов
/ 14 июля 2010

Можете ли вы опубликовать свой код, который вызывает эту ошибку? Кажется, что их проверка отладки (вероятные границы или что-то подобное) терпит неудачу, но это утверждение потерпит неудачу, только если ввод в функцию каким-то образом проблематичен. Чтобы мы могли оказать вам дальнейшую помощь, нам нужно увидеть код, который вызывает это поведение.

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