push_back上的隔离错误

Segfault on push_back

本文关键字:隔离 错误 back push      更新时间:2023-10-16

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

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

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

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

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

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

CTriggerManager* pTriggerManager = NULL;
这个问题显然

不在这个函数中,甚至不在 TriggerManager.h/cpp 文件中——这两个类都非常简单和幼稚。 顺便说一句,要初始化m_EventName最好在构造函数中使用初始列表,而不是赋值运算符......

例如,尝试使用valgrind...也许它会告诉你一个真正的原因很有趣......——似乎你在打电话给AddTrigger之前在某个地方破坏了一个内部列表......