vector standard header内でのエラー
Posted: 2009年10月04日(日) 16:22
毎度お世話になっております。
この度は、vector standard header内でのエラーについてお伺いに参りました。
エディタはVisual Studio2008を使っています。
現在、今までint**に動的にメモリを確保して2次元配列にしてマップにしていたのを、
vectorにマップのデータを格納するように書きなおす作業をしております。
デバッグ中に、
0x7c812afb でハンドルされていない例外が発生しました: Microsoft C++ の例外: std::out_of_range (メモリの場所 0x0012f670)
という見慣れたエラーが発生します。
vectorの要素数よりも大きなインデックスを指定したんだろうなということはわかるんですが、
エラーを出した行がvector standard header内に一気に飛んでしまうので、
自分で作ったどのコードによるエラーなのかがわかりません。
ちなみに、エラー箇所はvector standard headerの
_THROW(out_of_range, "invalid vector<T> subscript");
の行を指しています。
実行してきたコードを逆に一行ずつたどっていく、というような仕組みでもあればいいのですが…。
このマップのデータを格納したvectorはグローバルでいろんな場所で使われていて、
マップを描画するときなどはfor文によって何百回と呼び出されますし、
フィールドに置いてあるたくさんのオブジェクトや敵もこのデータを使って行動しています。
一行ずつステップ実行していってエラー箇所を実行するまで探す、
というのは非常に手間がかかってしまいます。
このvectorによるエラーが自分で作ったコードのどの行で起こったのか、
効率よく調べる方法はあるのでしょうか。
それとも、ステップ実行してエラー箇所を探すなど地道な方法しかないでしょうか。
この度は、vector standard header内でのエラーについてお伺いに参りました。
エディタはVisual Studio2008を使っています。
現在、今までint**に動的にメモリを確保して2次元配列にしてマップにしていたのを、
vectorにマップのデータを格納するように書きなおす作業をしております。
デバッグ中に、
0x7c812afb でハンドルされていない例外が発生しました: Microsoft C++ の例外: std::out_of_range (メモリの場所 0x0012f670)
という見慣れたエラーが発生します。
vectorの要素数よりも大きなインデックスを指定したんだろうなということはわかるんですが、
エラーを出した行がvector standard header内に一気に飛んでしまうので、
自分で作ったどのコードによるエラーなのかがわかりません。
ちなみに、エラー箇所はvector standard headerの
_THROW(out_of_range, "invalid vector<T> subscript");
の行を指しています。
実行してきたコードを逆に一行ずつたどっていく、というような仕組みでもあればいいのですが…。
このマップのデータを格納したvectorはグローバルでいろんな場所で使われていて、
マップを描画するときなどはfor文によって何百回と呼び出されますし、
フィールドに置いてあるたくさんのオブジェクトや敵もこのデータを使って行動しています。
一行ずつステップ実行していってエラー箇所を実行するまで探す、
というのは非常に手間がかかってしまいます。
このvectorによるエラーが自分で作ったコードのどの行で起こったのか、
効率よく調べる方法はあるのでしょうか。
それとも、ステップ実行してエラー箇所を探すなど地道な方法しかないでしょうか。