原子变量是否包含'一个指针,取得指针的所有权?
请考虑以下代码段:
{
std::atomic<Foo*> bar(new Foo());
}
// `bar' went out of scope, did it delete pointer to instance of Foo?
当然,我可以自己推导和删除它,或以其他方式解决它;但那不是重点。
这里的定义的行为是什么?
答案 0 :(得分:5)
不,std::atomic
唯一保证的是对象将不受数据争用的影响。所以你将释放指针指向你自己的记忆。
如果您需要托管动态内存容器,请使用unique_ptr或shared_ptr。
答案 1 :(得分:1)
没有。 std::atomic<T*>
有一个简单的析构函数,什么都不做,所以如果它拥有它就不能删除它。
std::atomic<int>
不“拥有”整数,它只存储一个值,同样std::atomic<int*>
只存储一个值,没有所有权或隐含的释放。