带有原子变量的指针所有权

Pointer ownership with atomic variables

本文关键字:指针 所有权 变量      更新时间:2023-10-16

是否有一个原子变量,'包含'指针,占用指针?

考虑以下片段:

{
    std::atomic<Foo*> bar(new Foo());
}
// `bar' went out of scope, did it delete pointer to instance of Foo?

当然,我可以自己得出并删除它,或者以另一种方式解决它;但这不是重点。

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

否,std::atomic保证的唯一一件事是该对象将没有数据竞赛。因此,您将有自由的记忆,即指针指向您的自我。

如果您想要一个托管的动态内存容器,则使用unique_ptr或shared_ptr。

no。std::atomic<T*>具有一个琐碎的破坏者,无需执行任何操作,因此如果它拥有它,则无法删除任何内容。

std::atomic<int>不"拥有"整数,它只是存储一个值,同样, std::atomic<int*>只是存储一个值,而没有所有权或释放。