分配给解除引用的unique_ptr

时间:2014-11-10 18:38:19

标签: c++11

我查看了有关std :: unique_ptr的其他问题,但未能找到这个问题的清晰简洁的答案。

给出以下代码:

std::unique_ptr<someClass> a(new someClass);
someClass b;
*a = b;

第一行中堆分配的someClass是否已被泄露?是垃圾收集了吗?

我很欣赏这个代码在内存分配中究竟发生了什么。

2 个答案:

答案 0 :(得分:1)

unique_ptr只有在 release拥有的资源时才会泄漏,并且不会自行销毁它。

在您的情况下,为unique_ptr调用a的{​​{3}}并返回引用指针对象的左值。然后,您可以为该指针调用复制赋值运算符,但这不会影响它占用的内存管理。
堆对象的内存在a定义范围的末尾发布。

答案 1 :(得分:-2)

编辑错误Unique_ptrs没有引用计数器。

只有当smartpointers的内部计数器为0时,您的unique_ptr才会被销毁。在这种情况下,它仍然是1。