【发布时间】:2012-02-10 22:57:53
【问题描述】:
我的应用程序发生了一些崩溃,想知道是否有人可以提供帮助。
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;
}
这很奇怪,这部分从来没有任何问题。我不知道如何重现错误。
【问题讨论】:
-
那……信息太少了,无法使用。
-
问题是您的代码中存在错误。但是不可能建议那可能是什么,因为您没有显示任何代码。请考虑创建minimal test-case。
-
你能举个例子说明什么可能导致这种情况吗?我不能给出代码我不知道问题出在哪里。
-
它几乎可以是任何东西。在某个地方,您破坏了容器的内部状态,或者您传递了一些无效的参数,或者您以其他方式调用了未定义的行为。我建议最小化代码,或者在例如下运行。 Valgrind,或启用检查容器。
-
如果您使用的是应该排序的集合,那么请确保比较函数是正确的。只是一个提示
标签: c++ gdb segmentation-fault