2011-08-15 14 views
0

私はSTLに到達したいときlib set :: findまたはempty()...コアファイルがあります。なぜSTLはfind()&empty()にコアダンプを `set`しますか?

私はgccのバージョン4.1.2 20070115(プレリリース)(SUSE Linux)を使用してM、スタックの流れを参照してください。

#0 0x00002aaaae7caf2a in _STL::_Rb_tree<unsigned int, unsigned int, 
_STL::_Identity<unsigned int>, _STL::less<unsigned int>, 
_STL::allocator<unsigned int> >::empty (this=0x8) 
    at /home/irish/nagrun/add-ons/include/stlport/stl/_tree.h:370 
#1 0x00002aaaae7caf4f in _STL::set<unsigned int, _STL::less<unsigned int>, _STL::allocator<unsigned int> >::empty (this=0x8) 
    at /home/irish/nagrun/add-ons/include/stlport/stl/_set.h:129 
#2 0x00002aaaae7ca5d1 in User::deleteSessionID (this=0x0, sessionID=4143972353) 
    at /home/irish/nagrun/NIG_SRC/PresenceEx_V100R001C41B010/Extends/UserManager/User.cpp:60 

どのようにこれを可能にすることができますか? イテレータでセットに挿入し、その内部をトラバースすることができます。

+1

おそらく、あなたのプログラムは未定義の動作を呼び出しますか?問題を再現するコードを提示する必要があります。ちょうどクラッシュは、しばしばあなたのプログラムのどこかにバグがあるという兆候です。 – Vlad

+1

誰もあなたのコードを見ずにあなたを助けることができますか? – Nawaz

+1

'this = 0x8'&' this = 0x0'は私を混乱させます。ポインタでセットにアクセスしますか? –

答えて

0

あなたはコメントに間違いがありませんでした:私はUserの関数をヌルポインタで呼び出しています。

スタックトレースが標準ライブラリ関数内で深く始まるため、私はこれを認識しませんでした。なぜ私がそれを呼び出すかではなく、findであると信じていました。

関連する問題