繁体   English   中英

C ++中的调试断言失败

[英]Debug assertion failure in C++

这是我关于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));

请建议问题可能出在哪里以及在哪里看。 我使用的迭代器有问题吗?

谢谢

我认为您应该发布代码,但不要发布STL断言代码(显然,这不是最容易研究的代码:)

无论如何,此断言消息通常表示尝试访问错误的索引(超出范围)或在std::vector或其周围的某些包装器中进行类似的写操作。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM