在C++中调试断言失败
问题描述:
这是我在*上的第一个问题。在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));
请建议,其中的问题可能是,在哪里看。这是我使用的迭代器的一些问题。
谢谢
答
你可以发布你的触发这个错误的代码吗?看起来他们的调试检查(可能的界限或类似的)失败了,但是只有当函数的输入有问题时,该断言才会失败。为了让我们更好地为您提供帮助,我们需要查看调用此行为的代码。
答
我想你应该发布您的代码,而不是STL断言代码(显然这个人是不是最简单的调查:)
无论如何,这种说法消息通常表明尝试访问错误的索引(超出范围)或者在您的std::vector
或其周围的一些包装中类似的写入操作。
如果您存储迭代器,例如在插入序列之后失效,则也可能导致这种情况。
您应该发布导致此断言的调用的代码。 – bshields 2010-07-14 19:26:42
你好。在编辑器中有零按钮和一个将选择格式化为代码的按钮 – Anycorn 2010-07-14 19:27:57