std::make_shared
是C++11引入的一种智能指针,它用于创建一个指向动态分配的对象的std::shared_ptr
智能指针。std::make_shared
函数确保在堆上分配内存,以容纳对象本身以及std::shared_ptr
控制块。
std::make_shared
的优点包括:
- 减少内存分配次数:与
std::shared_ptr
相比,std::make_shared
只进行一次内存分配,这可以减少内存碎片和分配开销。 - 提高性能:由于只进行一次内存分配,因此
std::make_shared
在某些情况下可以提高性能。 - 简化代码:使用
std::make_shared
可以简化代码,避免显式地创建和管理std::shared_ptr
控制块的开销。
下面为使用std::make_shared
的示例:
#include <memory>
struct MyClass {
int value;
};
int main() {
// 使用std::make_shared创建指向MyClass对象的智能指针
std::shared_ptr<MyClass> ptr = std::make_shared<MyClass>();
ptr->value = 42;
// 输出ptr指向的对象的值
std::cout << ptr->value << std::endl; // 输出:42
return 0;
}