Ошибка сегментации - std :: _ Rb_tree - PullRequest
0 голосов
/ 15 января 2012

Я испытываю некоторые сбои в своем приложении и хотел бы знать, может ли кто-нибудь помочь.

GDB:

http://pastebin.com/tW6HzY2Y Что может вызвать это? Я использую Ubuntu 10.04.3.

Edit: Смотри нравится, проблема здесь:

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 ]

1 голос
/ 16 января 2012

Не так много, чтобы пойти, как другие предложили. Трассировка стека, с которой вы связаны, почти не содержит информации. Однако можно с уверенностью сказать, что на основе this=0x38 вы пытаетесь найти что-то в объекте, который не является деревом. Мое личное предположение состоит в том, что ваша структура данных, содержащая ваш std::map<unsigned int, Player>, имеет эту карту после пары других членов (которые имеют общий размер 56 байт), но вы пытаетесь получить доступ к этой структуре данных с помощью указателя NULL. То есть, хотя ошибка сегментации произошла в std::_Rb_tree, ошибка вообще отсутствует в реализации std::map.

0 голосов
/ 16 января 2012

Запустите вашу программу под valgrind .Он почти наверняка выдаст некоторую ошибку до фактического сбоя, которая может более точно указать источник ошибки (в отличие от сопутствующего ущерба).

...