【发布时间】:2016-06-05 18:20:10
【问题描述】:
std::unique_ptr 的典型用途包括:
提供异常安全 处理具有动态生命周期的对象的类和函数,通过 保证正常退出和异常退出都删除
将具有动态生命周期的唯一拥有对象的所有权传递给 功能
获取具有动态生命周期的唯一拥有对象的所有权 从函数
作为移动感知容器中的元素类型,例如 std::vector, 它保存指向动态分配对象的指针(例如,如果 需要多态行为)
我对第一点很感兴趣。
在 cppreference.com 中没有提到 shared_ptr。
我找不到在引发异常时不会删除 shared_ptr 的场景。有人可以解释一下是否存在这种可能性吗?
【问题讨论】:
-
@user4581301:但这不是异常相关的问题,对吧?即使没有例外,这也会导致问题?
-
不,但这是你不能保证删除期限的一个例子。
-
如果共享对象的分配或构造抛出异常,甚至不会构造共享指针。如果已分配内存,则释放该内存。 (请不要让我用引用标准来证明)
标签: c++ exception shared-ptr unique-ptr