- ベストアンサー
vc++ 関連
ぼくは今vc++2008 を使っています. デバッグなしで実行だとでエラーになるのに デバッグだとエラーにならない というわけのわからないバグで混乱しています. デバッグモードだとエラーが出ないので バグが見つけられなくて困ってます. そういう事ってあるんですか? ちなみにエラーメッセージは Debug Assertion Failed! Program: ...ments\Visual Studio File: c:\program files\microsoft visual studio 9.0\vc\include\list Line: 218 Expression: list iterator not dereferencable です.
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>そういう事ってあるんですか? バッファオーバーフローしてぶっ壊した(デバッグ版だと緩衝領域が取られる)り、 未初期化のローカル変数(デバッグ版では特定の値で埋められるが、リリース版では不定値)を参照とかで、実行結果が変わることはあります。 ちなみに、「エラーにならない」のではなく、表面化しないだけです。 >File: c:\program files\microsoft visual studio 9.0\vc\include\list >Line: 218 >Expression: list iterator not dereferencable STLに詳しい人からの回答に期待…でしょうか。 使用しているSTLのlistで何かおかしいコトになっているのでしょう。 operator*()での問題っぽいですが……。 そのダイアログで[中止]とかで停止できるかと。 呼び出し履歴を見ていけば、いずれ自分の書いたコード(自動生成されたコード含む)に辿りつけるでしょう。 http://www.google.co.jp/search?hl=ja&num=30&q=%E5%91%BC%E3%81%B3%E5%87%BA%E3%81%97%E5%B1%A5%E6%AD%B4+%E3%83%87%E3%83%90%E3%83%83%E3%82%B0&btnG=%E6%A4%9C%E7%B4%A2&lr=&aq=f&oq=
その他の回答 (1)
- Tacosan
- ベストアンサー率23% (3656/15482)
や, どんなに STL に詳しくても「やっちゃいけないことをやった」以上には答えられないでしょう>#1. なにしろ「ソースが全くない」んだから.
お礼
ありがとうございます. list はプログラムのいたるところで使っているので 使った事のない「呼び出し履歴」を使って頑張ります.
補足
「呼び出し履歴」を用いたところ プログラムの中の 交差判定のバグにより list の末尾を指すイテレータを読み込んで いるバグということが分かりました. ありがとうございました.