为什么 STL 在 find() 和 empty() 上"设置"核心转储?

Why does STL `set` core dump on find() & empty()?

本文关键字:设置 核心 转储 STL find 为什么 empty      更新时间:2023-10-16

当我想达到STL库set::find或empty()…我得到了core文件

我使用的是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

这怎么可能?

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

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