7得票3回答
以值传递或常量引用传递 std::shared_ptr 并将其存储在容器中?

考虑以下向量: std::vector<std::shared_ptr<X>> myVector; 以下是两个将给定元素添加到向量中的函数: void foo1(std::shared_ptr<X> x) { myVector.push_ba...

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

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

30得票4回答
为什么make_shared的大小是两个指针?

如代码所示,从make_shared返回的对象大小为两个指针。 然而,为什么make_shared不像以下方式工作(假设T是我们要创建共享指针的类型): make_shared的结果大小为一个指针,它指向分配的内存大小为sizeof(int) + sizeof(T),其中int是引用计数,...

17得票1回答
从std::shared_ptr转移到std::unique_ptr的所有权

我有一个类 A,它拥有一个类型为 std::unique_ptr 的字段: class A { public: std::unique_ptr pointer; // class body }; 在我的代码中,我使用了几个指向相同对象的std::shared_ptr。现在我想要实现的是...

9得票2回答
将shared_ptr<T>转换为shared_ptr<void>

我有一个结构: struct Params { std::shared_ptr&lt;void&gt; user_data; /* ... */ }; 我希望以如下方式使用它: int main() { std::shared_ptr&lt;SpecializedPar...

12得票10回答
在库的公共接口中使用boost::shared_ptr

我们有一个C ++库提供给多个不同的客户端。最近,我们从公共接口中使用原始指针切换到使用boost :: shared_ptr。这带来了巨大的好处,因为现在客户无需担心谁需要删除什么以及何时删除。当我们进行切换时,我相信这是正确的事情,但是让我感到困扰的是,我们必须在公共接口中包含第三方库的内...

18得票3回答
C++中std::shared_ptr的使用和信息

我试图在我的代码中使用 std::shared_ptr。我已经看到有关此主题的其他问题,但我仍然收到编译器错误。我是否拥有正确的gcc版本和设置? 我已尝试将我的代码与分别包含头文件&lt;memory&gt;和&lt;tr1/memory&gt;编译,但在这两种情况下都出现以下错误。 我...

12得票2回答
无法在allocate_shared/make_shared中使用自定义的分配器

在我的C++11程序中,我使用shared_ptr&lt;T&gt;来管理一些需要主动释放的对象。恰好标准分配器(通过operator new)成为了性能瓶颈,因此我想创建自己的分配器,该分配器将一次性分配一大块内存,然后根据需要提供给make_shared函数。不幸的是,这是我第一次编写分配...

11得票4回答
为什么shared_ptr需要对weak_ptr进行引用计数?

引用自C++ Primer $12.1.6: weak_ptr(表12.5)是一个智能指针,它不控制指向的对象的生命周期。相反,weak_ptr指向由shared_ptr管理的对象。将weak_ptr绑定到shared_ptr 不会改变该shared_ptr的引用计数。一旦指向该对象的最后...

47得票13回答
在构造函数中应该(不应该)做什么?

我想请问您在C ++中构造函数的最佳实践。 我不太确定在构造函数中应该做什么,不应该做什么。 我只应该将其用于属性初始化、调用父级构造函数等吗?还是可能将更复杂的功能放入其中,例如读取和解析配置数据,设置外部库等。 或者我应该为此编写特殊函数?即 init() / cleanup()? ...