在下面的代码中,我在调用push_back()的行上得到了一个段错误:
CTrigger CTriggerManager::AddTrigger(const std::wstring& eventName)
{
CTrigger trigger(eventName);
m_Triggers.push_back(trigger);
return trigger;
}
如果代码中不清楚,我正在尝试初始化对象trigger
将其推送到列表m_Triggers
的背面。任何人都可以告诉我为什么这可能导致段错误?
如果需要,请参阅完整上下文中的代码here。
答案 0 :(得分:2)
正在使用和声明TriggerManger在哪里?我打赌,因为它在push_back上崩溃,CTriggerManager的实际实例为null,并且第一次访问成员变量(m_Triggers)导致访问冲突。
我在这里看到一个声明,但从未实例化过: world.cpp:
CTriggerManager* pTriggerManager = NULL;
答案 1 :(得分:0)
问题显然不在这个函数中,甚至不在TriggerManager.h / cpp文件中 - 这两个类都非常简单和天真。顺便说一句,初始化m_EventName
更好地在构造函数中使用初始化列表,而不是赋值运算符......
尝试使用valgrind
例如......可能会显示出对真正原因感兴趣... - 在调用AddTrigger
之前,您似乎在某处损坏了内部列表。 ..