list iterator not dereferencable の理由



std::list を使用していて、list iterator not dereferencable という意味不明のエラーが出た。
ランタイムのアサーション フェイリヤー(Assertion Failure) で、デバッグも不可能。。。

いろいろ考えてコードを直してみても、いっこうに修正ができる気配がない。

結局、原因は、次のコードだった。

std::list::iterator it2 = objList.end();
Obj* obj = *it2;
it2--;


end() で取得したイタレータは、データ要素を指していないで、
最後のデータ要素の1つ後ろを指している!

ということを忘れていました。。。

書いている途中は覚えていたんだけど、
書き終わった頃にはすっかり。。。

簡単な原因でも、エラーの意味が不明だと、解決に時間がかかる。。。
慣れだけど。
[PR]
by isoq | 2010-03-02 11:56 | C/C++/Win32
e87.com(千趣会イイハナ) 花を贈るなら日比谷花壇
<< フリーウェア NaiNai(な... 今日からBullet >>