-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 に答える