11得票2回答
std::make_shared构造函数参数数量

在 Visual Studio 2010/2011 中依然没有可变参数模板(variadic templates),这就导致了一个接受大量参数的构造函数可能会存在问题。例如,下面的代码将无法通过编译: MyMaterials.push_back(std::make_shared<M...

7得票4回答
C++编译器错误:invalid declarator before

这是我的代码。在编译时,我遇到了错误: “geometry”之前的声明无效 在第16行和第48行出现这个错误,我不确定哪里出了问题,请给予建议。 #include <iostream> #include <memory> #include <vector&g...

44得票4回答
你能否使用类似于make_shared的方式分配一个数组?

buffer = new char[64]; buffer = std::make_shared<char>(char[64]); ??? 你能否使用make_shared<>()为数组分配内存? 我可以这样做:buffer = std::make_shared&lt...

18得票2回答
如何结合std::make_shared和new(std::nothrow)?

C++的new运算符有一个选项,当分配失败时可以返回一个空指针而不是抛出bad_alloc异常。Foo * pf = new(std::nothrow) Foo(1, 2, 3); 是的,我理解这只能防止新对象抛出bad_alloc异常,但它不能防止Foo构造函数抛出异常。如果你想使用shar...

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

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

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

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

7得票4回答
新的和make_shared用于共享指针

我发现这篇帖子中,@kerek SB的一个回答如下: std::shared_ptr<Object> p1 = std::make_shared<Object>("foo"); std::shared_ptr<Object> p2(new Object(...

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

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

28得票2回答
C++17中std::make_shared()的更改

在cppref中,直至C++17,以下内容成立: 像f(std::shared_ptr<int>(new int(42)), g())的代码可能会导致内存泄漏,如果g在new int(42)之后被调用并且抛出异常,而f(std::make_shared<int>...

57得票4回答
make_shared是否真的比new更高效?

我正在尝试使用C++11的shared_ptr和make_shared,并编写了一个小的玩具示例来查看调用make_shared时实际发生了什么。作为基础设施,我正在使用带有XCode4的llvm/clang 3.0以及llvm标准C++库。class Object { public: ...