15得票1回答
C++11:将“this”作为参数传递给std :: make_shared

我正在尝试使用std::make_shared将'this'传递给构造函数。 示例:// headers class A { public: std::shared_ptr<B> createB(); } class B { private: std::sha...

15得票3回答
为什么boost库没有make_scoped()函数?

Boost的 make_shared() 函数承诺在尝试创建 shared_ptr 时具有异常安全性。 为什么没有相应于 make_shared() 的 make_scoped()等价物? 是否存在常见的最佳实践? 以下是来自boost::scoped_ptr 文档的代码示例,它似乎不安全...

12得票2回答
初始化shared_ptr成员变量,new和make_shared有什么区别?

当初始化一个shared_ptr成员变量时:// .h class Customer { public: Customer(); private: std::shared_ptr<OtherClass> something_; } // .cpp Customer():...

53得票5回答
如何将deleter传递给make_shared函数?

自从C++11以来,由于多种原因,开发者倾向于使用智能指针类来管理动态分配的对象的生命周期。随着这些新的智能指针类的出现,标准甚至建议不要使用像new这样的运算符,而是建议使用make_shared或make_unique来避免一些容易出错的问题。如果我们想使用一个智能指针类,比如shared...

9得票1回答
为什么shared_ptr<>必须单独为控制块和管理对象分配内存?

这个链接的问题是关于 make_shared&lt;&gt; 函数和 shared_ptr&lt;&gt; 构造函数之间是否有区别。 使用 make_shared 会发生什么 其中一部分回答是,make_shared&lt;&gt; 通常会在单个分配中为指向的对象和智能指针控制块分配内存。...

9得票2回答
boost::make_shared中的“single allocation”是什么意思?

在make_shared的boost文档中,它说: 除了便利和风格外,这样的函数也是异常安全的,并且由于它可以使用单个分配来分配对象及其对应的控制块,因此速度 considerably 更快,消除了 shared_ptr 构造开销的重要部分。 我不理解“单个分配”是什么意思?

27得票3回答
使用make_shared时会发生什么?

我想知道这两行代码是否相同:shared_ptr&lt;int&gt; sp(new int(1)); // double allocation? shared_ptr&lt;int&gt; sp(make_shared&lt;int&gt;(1)); // just one allocati...

13得票1回答
使能 enable_shared_from_this 和 make_shared 提供相同的优化吗?

据我理解,make_shared&lt;T&gt;(...) 可能提供一些内存分配优化(它可以在与类 T 的实例相同的内存块中分配引用计数器)。 enable_shared_from_this 是否提供相同的优化呢?因此: class T : std::enable_shared_from...

21得票2回答
std::make_shared()使用自定义分配器吗?

考虑这段代码: #include &lt;memory&gt; #include &lt;iostream&gt; class SomeClass { public: SomeClass() { std::cout &lt;&lt; "SomeClass()" &...

9得票3回答
为什么即使有类重载的 new/delete 运算符,'std::make_shared' 仍然会使用全局内存分配?

使用std::make_shared&lt;C&gt;时,不会调用类的重载new/delete操作符。 使用std::shared_ptr&lt;C&gt;、std::unique_ptr&lt;C&gt; 和std::make_unique&lt;C&gt;时,会使用类的重载new/del...