带有原子变量的指针所有权
Pointer ownership with atomic variables
是否有一个原子变量,'包含'指针,占用指针?
考虑以下片段:
{
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*>
只是存储一个值,而没有所有权或释放。
相关文章:
- 智能指针概念所有权和寿命
- 如何指示指针C++所有权
- 如何将所有权从一个共享指针向量转移到另一个向量?
- C++类指针和所有权
- 什么是资源或指针的所有权?
- 进入智能指针,如何处理代表所有权
- 将智能指针所有权转移到容器
- 将原始指针的所有权转移到unique_ptr
- 明智的指针所有权语义和平等
- EIGEN地图 - 它是否占数据指针的所有权
- 带有原子变量的指针所有权
- 如果指针已经被删除,指针容器怎么能拥有指针的所有权
- 是否使用unique_ptr作为所有权和原始指针
- 文件输入和指针所有权语义
- 指针所有权
- Objective-C ARC 指针所有权与C++
- 唯一的指针所有权
- 复杂设计中的Shared_ptr和逻辑指针所有权用例
- c++ 11智能指针所有权和类型转换
- 声明现有原始指针所有权的正确方法