0

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

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

如果从代码中不清楚,我正在尝试初始化一个对象trigger,将其推到 list 的后面m_Triggers。谁能告诉我为什么这可能会导致段错误?

如果需要,请在此处查看完整上下文中的代码。

4

2 回答 2

2

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

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

CTriggerManager* pTriggerManager = NULL;
于 2012-12-18T04:11:11.693 回答
0

问题显然不在此函数中,甚至不在 TriggerManager.h/cpp 文件中——这两个类都非常简单和幼稚。顺便说一句,为了更好地初始化m_EventName以在构造函数中使用初始化列表,而不是分配运算符...

尝试使用valgrind例如...可能会向您展示一个真正的原因很有趣...-似乎您在调用AddTrigger...之前在某处损坏了内部列表

于 2012-12-18T04:10:52.103 回答