共享指针释放

Dav*_*vid 4 c++ shared-ptr c++11

可能的重复:
如何从 boost::shared_ptr 释放指针?
从shared_ptr 中分离指针?

我正在尝试释放一个shared_ptr(您可以释放一个unique_ptr)。我知道当shared_ptr不唯一时这没有意义,但我有一个保证是唯一的shared_ptr。我试过了...

m_pObj.reset((T*)nullptr, [](T* const){});
Run Code Online (Sandbox Code Playgroud)

...但它只是删除了该对象。我不确定如果shared_ptr最终调用delete,删除器参数有什么用处。

有什么方法可以实现这一点(如果没有其他方法,欢迎使用VS2010特定的解决方案)。

Mar*_* Ba 5

在这个问题结束之前,我将添加我对此的看法。

我认为有很多充分的理由解释为什么你偶尔想要释放一个shared_ptr(或boost::scoped_ptr)。然而,设计这些类的人认为你不应该这样做。(这是他们的孩子,他们有权利这样做。)

据我所知,根本不可能分离shared_ptr。您将需要使用另一个类或提出一个不需要分离它的设计。

我应该阅读这些骗局,因为您实际上可以使用非常特殊的删除器将其破解在一起。