我在代码中广泛使用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。
如果可能,我想确认上述模式没有问题。
谢谢。 戴夫。