单例类崩溃

Singleton class crashes

本文关键字:崩溃 单例类      更新时间:2023-10-16

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

H 文件:

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

在 stdlib 完全初始化之前,可能会崩溃的 'std::map' 初始化。

如果从另一个静态初始值设定项调用GetInstance(),则会发生这种情况。初始化顺序不是在不同库之间定义的。

解决方案是在调用 main 之前不要构造非 POD 的东西。