这是我关于stackoverflow的第一个问题。
我正在尝试调试程序,但是当我尝试运行它时,它会终止并显示错误消息 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));
请说明问题所在的位置以及在哪里查看。我使用的迭代器是否存在问题。
由于
答案 0 :(得分:2)
我认为你应该发布你的代码,但不要发布STL断言代码(显然这个代码最容易调查:)
无论如何,这个断言消息通常表示尝试访问错误的索引(越界)或std::vector
中的类似写操作或其周围的包装。
如果您存储的迭代器在例如插入序列之后变为无效,则也可能导致这种情况。
答案 1 :(得分:0)
您可以发布触发此错误的您的代码吗?看起来他们的调试检查(可能是边界或类似的东西)是失败的,但是如果函数的输入在某种程度上有问题,那么断言只会失败。为了让我们真正为您提供帮助,我们需要查看调用此行为的代码。