单身类崩溃

时间:2016-04-27 09:33:40

标签: c++ c++11 singleton c++14

我实现了一个看起来像这样的单例类:

h file:

class MySingleton
{
public:
    static MySingleton& GetInstance();

private:
    MySingleton();
    virtual ~MySingleton();

    std::map<MyStruct, PointerToClass*, MyCompareStruct> mMyMap;
    CRITICAL_SECTION mMyMapCriticalSection;
};

cpp文件:

MySingleton& MySingleton::GetInstance()
{
    static MySingleton instance;

    return instance;
}

在某些运行中,我的代码在实例初始化时崩溃:

    static MySingleton instance;

我在实施中做错了什么? 我正在开发visual studio 2015

1 个答案:

答案 0 :(得分:0)

可能崩溃的是#std :: map&#39; stdlib完全初始化之前的初始化。

如果从另一个静态初始化程序调用{​​{1}},则会发生这种情况。未在不同库之间定义初始化顺序。

解决方案是在调用main之前不构造非POD事物。