-1

这是我关于stackoverflow的第一个问题。

我正在尝试调试一个程序,但是当我尝试运行它时,它会以错误消息 Debug Assertion failed 而终止,当我重新尝试调试它时,会创建一个断点,它将我带到这个函数中的向量

#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

2 回答 2

2

我认为你应该发布你的代码,而不是 STL 断言代码(显然这不是最容易调查的:)

无论如何,这个断言消息通常表明试图访问错误的索引(越界)或在你的std::vector或围绕它的一些包装器中的类似写操作。

如果您存储在例如一系列插入之后变得无效的迭代器,也可能会导致这种情况。

于 2010-07-14T19:26:55.863 回答
0

您可以发布触发此错误的代码吗?似乎他们的调试检查(可能是边界或类似的东西)失败了,但只有当函数的输入有问题时,断言才会失败。为了让我们真正为您提供进一步帮助,我们需要查看调用此行为的代码。

于 2010-07-14T19:26:34.097 回答