2010-07-14 2 views
-1

Это мой первый вопрос о stackoverflow.Ошибка подтверждения отладки в C++

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

#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)); 

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

Благодаря

+4

Вы должны опубликовать свой код, который вызывает вызов, вызывающий это утверждение. – bshields

+0

привет. В редакторе есть кнопка с нулем и одна, которая форматирует выбор как код – Anycorn

ответ

0

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

2

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

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

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

Смежные вопросы