19得票2回答
我该如何使用std::weak_ptr作为键和std::map一起使用?

我该如何像下面的代码一样,将std::weak_ptr用作std::map的键?#include <map> #include <memory> int main() { std::map< std::weak_ptr<int>, bool ...

18得票3回答
为什么shared_ptr的引用计数对象还需要跟踪指向该对象的weak_ptr数量?

您好,我正在阅读有关C ++的shared_ptr的此文档和其他一些文档,并且它们似乎都表明除了指向分配对象的shared_ptr数量外,引用计数对象还必须跟踪指向对象的weak_ptr指针的数量。我的问题是为什么?根据我的理解,weak_ptr是非拥有的,因此如果指向对象的shared_pt...

17得票4回答
std::enable_shared_from_this: 在析构函数中调用shared_from_this()是否允许?

#include <memory> #include <iostream> struct A : public std::enable_shared_from_this<A> { ~A() { auto this_ptr =...

17得票4回答
对象的析构函数中`weak_ptr::expired`的行为

Consider the following code: #include <iostream> #include <memory> using namespace std; class T; std::weak_ptr<T> wptr; class...

15得票4回答
如何创建一个由std::weak_ptr组成的C++11 std::unordered_set?

我有这样一个集合:set<weak_ptr<Node>, owner_less<weak_ptr<Node> > > setName; 它可以正常工作。但是我想将其改为无序集合,但这样做会导致大约六页的错误。有什么想法吗? 在查看了所有错误消息页...

15得票2回答
一个weak_ptr如何知道共享资源已经过期?

考虑以下代码:#include <memory> #include <iostream> using namespace std; struct MySharedStruct { int i; }; void print_value_of_i(weak_ptr...

15得票5回答
从原始指针创建weak_ptr<>

我想将原始指针成员包装为智能指针,以防止在开发类内部删除。指针下的对象的所有者位于类外。因此,似乎boost::shared_ptr和std::auto_ptr不适合。以下是一个简化的示例:class Foo { boost::weak_ptr&lt;Bar&gt; m_bar; publ...

15得票1回答
过期的weak_ptr能否与未初始化的区分开来?

例如:std::weak_ptr&lt;int&gt; wp1(std::make_shared&lt;int&gt;()); std::weak_ptr&lt;int&gt; wp2; assert(PointsToValidOrExpiredObject(wp1)); assert(!P...

15得票4回答
shared_ptr存在的循环依赖问题是什么?

我读过关于共享指针的相关内容并理解了如何使用。但是我从未理解过共享指针中的循环依赖问题,以及弱指针如何解决这些问题。请问有人能够清楚地解释这个问题吗?

14得票2回答
如何在没有引用时从缓存中删除(非侵入式)智能指针?

由于我的新手声誉,我无法回复这个Thread,具体来说是接受的答案: 我从未使用过boost::intrusive智能指针,但如果您使用shared_ptr智能指针,您可以为缓存使用weak_ptr对象。 当系统决定释放它们的内存时,这些weak_ptr指针不会被视为引用,但只要对象尚未被...