【发布时间】:2020-10-28 21:57:15
【问题描述】:
在阅读智能指针时,尤其是在std::shared_ptr 和std::weak_ptr 的情况下,我经常发现人们使用术语“所有权”或“它拥有对象”。但这种所有权到底是什么?在尝试理解std::weak_ptr 的用例时更加令人困惑!
如果我们写int a = 2,那么我们可以说a owns 2吗?或
更具体地说,在int a = 2; int* ptr_a = &a; 中,我们可以说ptr_a 拥有a吗?
【问题讨论】:
-
所有权通常用于定义谁负责删除动态分配的内存,因此您的
int示例不适合这个,因为没有动态分配 -
这有助于回答您的问题吗? What is ownership of resources or pointers?
-
因为上面的链接没有涵盖它,所以
weak_ptr是不是所有者。当资源被释放时,它没有任何发言权。它所获得的是一种测试资源是否已被释放并在尚未释放的情况下声明(通常是临时的)所有权份额的方法。
标签: c++ pointers smart-pointers