【发布时间】:2016-10-06 06:29:36
【问题描述】:
documentation 声明std::make_shared<T> 通常会同时为T 和智能指针的控制块分配内存,而std::shared_pointer<T>(new T) 则执行两次分配。这是否意味着它更有效,因此如果可能,应该始终使用std::make_shared?
关于 Qt 等效项的相同问题 - QSharedPointer。根据docs,QSharedPointer 内部结构和对象在一次内存分配中分配,这有助于减少长时间运行的应用程序中的内存碎片。这是否意味着QSharedPointer<T>::create() 是首选?
class MyClass {};
QSharedPointer<MyClass> ptr1 = QSharedPointer<MyClass>::create(); // better
QSharedPointer<MyClass> ptr2(new MyClass); // worse
【问题讨论】:
标签: c++ qt smart-pointers