提升智能指针和静态初始化命令惨败

时间:2014-10-09 13:36:52

标签: c++ boost

我在代码中广泛使用boost智能指针。

我最近看到了一些奇怪的核心转储,一个值得关注的问题是静态初始化命令fiasco和boost智能指针的可能性。

将boost :: shared_ptr作为静态对象是否存在问题。 我已检查过boost代码,但我没有在shared_ptr中看到任何可能引起关注的静态数据。

模式的一个例子如下:

class ObjectFactory {
public:
    static boost::shared_ptr<ObjectInterface> createObject();
private:
    static boost::shared_ptr<ObjectInterface> m_object;
};

工厂隐藏了实际返回给用户的实现。它还确保只创建一个实现实例并将其存储在m_object中。 一旦主要完成,m_object将被销毁,即清除静态数据。

我也可以在这里使用单线模式,但静态实例变量将被绑定到静态boost shared_ptr。

如果可能,我想确认上述模式没有问题。

谢谢。 戴夫。

0 个答案:

没有答案