分段错误 - std :: _ Rb_tree

时间:2012-01-15 19:23:35

标签: c++ gdb segmentation-fault

我正在处理我的应用程序中的一些崩溃,并想知道是否有人可以提供帮助。

GDB:

http://pastebin.com/tW6HzY2Y 是什么导致这个?我正在使用Ubuntu 10.04.3。

编辑: 看起来像问题在这里:

bool ChatChannel::removeUser(Player* player)
{
    UsersMap::iterator it = m_users.find(player->getID());
    if(it == m_users.end())
        return false;

    m_users.erase(it);

    return true;
}

这很奇怪,这部分从来没有任何问题。我不知道如何重现错误。

2 个答案:

答案 0 :(得分:1)

其他建议并没有太大的意义。您链接的堆栈跟踪几乎没有信息。但是,有一点可以说是安全的:基于this=0x38,您试图在不是树的对象中找到某些东西。我个人的猜测是,包含您的std::map<unsigned int, Player>的数据结构在其他几个成员(总大小为56字节)之后有这个映射但您尝试通过NULL指针访问此数据结构。也就是说,尽管std::_Rb_tree中发生了分段错误,但错误根本不在std::map实现中。

答案 1 :(得分:0)

valgrind下运行您的程序。它几乎肯定会在实际崩溃之前吐出一些错误,这可能更接近错误的来源(而不是附带损害)。