删除unordered_map的元素时,列表中的访问冲突

时间:2012-04-26 00:24:14

标签: c++ std

我遇到了一个奇怪的访问冲突错误..当我在下面的函数的退出处放置一个断点时它有时会转到函数的末尾,有时候不会......调用堆栈是相同的..访问冲突在1533行的列表标题内.s_subscriptions是SubscriptionsMap类型的静态成员..

typedef std::vector<HandlerSubscriptionBasePtr> Subscriptions;
typedef std::unordered_map<const std::type_info*, Subscriptions> SubscriptionsMap;

void TE::Events::Event::UnRegisterSubscription(const std::type_info* eventTypeInfoPtr,    const EventHandler* eventHandler)
{
        SubscriptionsMap::iterator mapItr = s_subscriptions.find(eventTypeInfoPtr);
        if (mapItr != s_subscriptions.end())
        {
                s_subscriptions.erase(mapItr);
        }
}

我已经尝试为此编写一个测试用例,但还没有能够重现它。

这可能是什么?我该如何调试呢?

0 个答案:

没有答案