为什么STL`set`核心转储在find()&空()?

时间:2011-08-15 12:48:47

标签: c++ stl coredump

当我想要达到STL lib set :: find或empty()时......我得到了核心文件。

我正在使用gcc版本4.1.2 20070115(预发行版)(SUSE Linux),请参阅堆栈流程:

#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

这怎么可能? 我可以使用迭代器插入到set中并遍历它。

1 个答案:

答案 0 :(得分:0)

评论中你是对的:我一直通过空指针调用User上的函数。

我没有意识到这一点,因为堆栈跟踪在标准库函数的深处开始,让我相信问题出在find,而不是我的调用方式。