指针所有权与原子变量

pau*_*s86 1 c++ pointers atomic c++11

"包含"指针的原子变量是否取得了指针的所有权?

请考虑以下代码段:

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

// `bar' went out of scope, did it delete pointer to instance of Foo?
Run Code Online (Sandbox Code Playgroud)

当然,我可以自己导出和删除它,或者以另一种方式解决它; 但那不是重点.

这里定义的行为是什么,如果有的话?

Cae*_*sar 5

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

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