我有一个共享对象需要发送给系统API,之后再提取回来。系统API只接收void *. 我不能使用shared_ptr :: get(),因为它不会增加引用计数,而且在从系统API中提取之前,它可能会被其他线程释放。发送新的shared_ptr *可以工作,但需要额外的堆分配。 其中一种方法是...
在 C++0x 中,shared_ptr 将从 tr1 移到 std 中。所以要包含哪个头文件才能使用它呢? 我正在使用的是 g++ 4.5(ubuntu 10.10)。
我经常在代码中看到这种模式,在成员函数的第一个参数上绑定shared_from_this,并使用async_*函数调度结果。这是来自另一个问题的示例:void Connection::Receive() { boost::asio::async_read(socket_,boost:...
考虑下面的程序: #include <memory> #include <iostream> class X : public std::enable_shared_from_this<X> { public: struct Cleanup1 {...
如果我有一个boost::shared_array<T>(或者boost::shared_ptr<T[]>),有没有一种方法可以获得一个与数组共享的 boost::shared_ptr<T>? 例如,我可能想这样写: shared_array<in...
一个C++的std::shared_ptr<..>可以是空的,也可以是null。这两个概念都存在,并且它们不是等价的。此外,在这些情况之间,也不能总是有任何蕴含关系。 后一种情况很容易检测,因为operator bool提供了精确的测试。根据文档,它“检查*this是否存储非空指...
我正在阅读这篇答案,作者提到了boost最佳实践中的一句话: 避免使用未命名的shared_ptr临时变量以节约输入时间;为了理解为什么这样做是危险的,请考虑以下例子: void f(shared_ptr<int>, int); int g(); void ok() {...
在我的当前项目中,我广泛使用了boost::shared_ptr。 最近,我的团队成员也开始使用weak_ptr。我不知道应该在什么情况下选择哪个。 除此之外,如果我想将weak_ptr转换为shared_ptr,我该怎么做?通过对weak_ptr进行锁定以创建shared_ptr会影响到...
我有一个Creature对象的集合,它们在应用程序的某个部分使用std::make_shared和std::shared_ptr创建和拥有。 我还使用std::weak_ptr<Creature>在World对象中跟踪选择的零个或一个Creature。 void World::...
C++11标准库是否提供将std::shared_ptr转换为std::unique_ptr,或者将std::unique_ptr转换为std::shared_ptr的实用工具?这个操作安全吗?