2010-07-14 185 views
-1

这是我在stackoverflow上的第一个问题。在C++中调试断言失败

我试图调试程序,但是当我尝试运行它,它与错误讯息终止 调试断言失败,当我重新尝试调试它一个突破点创建了带我到 向量在这个函数

#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 2010-07-14 19:26:42

+0

你好。在编辑器中有零按钮和一个将选择格式化为代码的按钮 – Anycorn 2010-07-14 19:27:57

回答

0

你可以发布你的触发这个错误的代码吗?看起来他们的调试检查(可能的界限或类似的)失败了,但是只有当函数的输入有问题时,该断言才会失败。为了让我们更好地为您提供帮助,我们需要查看调用此行为的代码。

2

我想你应该发布您的代码,而不是STL断言代码(显然这个人是不是最简单的调查:)

无论如何,这种说法消息通常表明尝试访​​问错误的索引(超出范围)或者在您的std::vector或其周围的一些包装中类似的写入操作。

如果您存储迭代器,例如在插入序列之后失效,则也可能导致这种情况。