指针所有权与原子变量

时间:2014-01-28 16:08:18

标签: c++ pointers c++11 atomic

原子变量是否包含'一个指针,取得指针的所有权?

请考虑以下代码段:

{
    std::atomic<Foo*> bar(new Foo());
}

// `bar' went out of scope, did it delete pointer to instance of Foo?

当然,我可以自己推导和删除它,或以其他方式解决它;但那不是重点。

这里的定义的行为是什么?

2 个答案:

答案 0 :(得分:5)

不,std::atomic唯一保证的是对象将不受数据争用的影响。所以你将释放指针指向你自己的记忆。

如果您需要托管动态内存容器,请使用unique_ptrshared_ptr

答案 1 :(得分:1)

没有。 std::atomic<T*>有一个简单的析构函数,什么都不做,所以如果它拥有它就不能删除它。

std::atomic<int>不“拥有”整数,它只存储一个值,同样std::atomic<int*>只存储一个值,没有所有权或隐含的释放。