关于push_back的Segfault

时间:2012-12-18 03:55:21

标签: c++ list segmentation-fault push-back

在下面的代码中,我在调用push_back()的行上得到了一个段错误:

CTrigger CTriggerManager::AddTrigger(const std::wstring& eventName)
{
    CTrigger trigger(eventName);
    m_Triggers.push_back(trigger);
    return trigger;
}

如果代码中不清楚,我正在尝试初始化对象trigger将其推送到列表m_Triggers的背面。任何人都可以告诉我为什么这可能导致段错误?

如果需要,请参阅完整上下文中的代码here

2 个答案:

答案 0 :(得分:2)

正在使用和声明TriggerManger在哪里?我打赌,因为它在push_back上崩溃,CTriggerManager的实际实例为null,并且第一次访问成员变量(m_Triggers)导致访问冲突。

我在这里看到一个声明,但从未实例化过: world.cpp:

CTriggerManager* pTriggerManager = NULL;

答案 1 :(得分:0)

问题显然不在这个函数中,甚至不在TriggerManager.h / cpp文件中 - 这两个类都非常简单和天真。顺便说一句,初始化m_EventName更好地在构造函数中使用初始化列表,而不是赋值运算符......

尝试使用valgrind例如......可能会显示出对真正原因感兴趣... - 在调用AddTrigger之前,您似乎在某处损坏了内部列表。 ..