11得票4回答
锁定一个 shared_ptr

我有一个共享对象需要发送给系统API,之后再提取回来。系统API只接收void *. 我不能使用shared_ptr :: get(),因为它不会增加引用计数,而且在从系统API中提取之前,它可能会被其他线程释放。发送新的shared_ptr *可以工作,但需要额外的堆分配。 其中一种方法是...

22得票2回答
如果我想使用std::shared_ptr,应该包含哪个头文件? 答案:需要包含<memory>头文件。

在 C++0x 中,shared_ptr 将从 tr1 移到 std 中。所以要包含哪个头文件才能使用它呢? 我正在使用的是 g++ 4.5(ubuntu 10.10)。

20得票5回答
提升Boost async_*函数和shared_ptr的效率

我经常在代码中看到这种模式,在成员函数的第一个参数上绑定shared_from_this,并使用async_*函数调度结果。这是来自另一个问题的示例:void Connection::Receive() { boost::asio::async_read(socket_,boost:...

12得票4回答
多个shared_ptr存储相同指针

考虑下面的程序: #include &lt;memory&gt; #include &lt;iostream&gt; class X : public std::enable_shared_from_this&lt;X&gt; { public: struct Cleanup1 {...

8得票3回答
shared_array元素作为shared_ptr使用?

如果我有一个boost::shared_array&lt;T&gt;(或者boost::shared_ptr&lt;T[]&gt;),有没有一种方法可以获得一个与数组共享的 boost::shared_ptr&lt;T&gt;? 例如,我可能想这样写: shared_array&lt;in...

13得票1回答
如何测试shared_ptr是否为空或不拥有任何内容

一个C++的std::shared_ptr&lt;..&gt;可以是空的,也可以是null。这两个概念都存在,并且它们不是等价的。此外,在这些情况之间,也不能总是有任何蕴含关系。 后一种情况很容易检测,因为operator bool提供了精确的测试。根据文档,它“检查*this是否存储非空指...

10得票2回答
C++11中如何使用shared_ptr(std::shared_ptr)进行分配:将shared_ptr初始化为临时变量是否仍然不可行?

我正在阅读这篇答案,作者提到了boost最佳实践中的一句话: 避免使用未命名的shared_ptr临时变量以节约输入时间;为了理解为什么这样做是危险的,请考虑以下例子: void f(shared_ptr&lt;int&gt;, int); int g(); void ok() {...

46得票4回答
提升(boost)、共享指针(shared ptr)和弱指针(weak ptr)?什么时候使用哪一个?

在我的当前项目中,我广泛使用了boost::shared_ptr。 最近,我的团队成员也开始使用weak_ptr。我不知道应该在什么情况下选择哪个。 除此之外,如果我想将weak_ptr转换为shared_ptr,我该怎么做?通过对weak_ptr进行锁定以创建shared_ptr会影响到...

11得票2回答
如果我注意到一个weak_ptr已经过期了,我应该调用reset吗?

我有一个Creature对象的集合,它们在应用程序的某个部分使用std::make_shared和std::shared_ptr创建和拥有。 我还使用std::weak_ptr&lt;Creature&gt;在World对象中跟踪选择的零个或一个Creature。 void World::...

154得票5回答
C++11中的unique_ptr和shared_ptr能相互转换吗?

C++11标准库是否提供将std::shared_ptr转换为std::unique_ptr,或者将std::unique_ptr转换为std::shared_ptr的实用工具?这个操作安全吗?