make_shared重写删除函数
时间: 2024-09-19 17:04:58 浏览: 35
param_ctor_func.rar_Make It!
`make_shared` 是 C++11 引入的一个智能指针工厂函数,它用于创建共享所有权的 `shared_ptr` 对象。标准库提供这个函数的主要目的是为了简化动态内存分配和资源管理,尤其是避免手动管理析构顺序带来的问题。
当你需要创建一个 `shared_ptr` 并立即传给它所指向的对象时,`make_shared` 可以帮到你。它的语法类似这样:
```cpp
auto ptr = std::make_shared<SomeType>(arg1, arg2);
```
`make_shared` 内部会自动调用对象的构造函数,并返回一个拥有该对象所有权的 `shared_ptr`。此外,如果你尝试删除(通过 `delete` 关键字)由 `make_shared` 创建的对象,实际上不需要显式地这样做。`shared_ptr` 的生命周期管理是由其内部计数器控制的,当所有持有它的 `shared_ptr` 引用失效(即没有其他引用指向),系统会在适当的时机自动调用析构函数释放内存。
需要注意的是,`make_shared` 没有直接对应的 "删除" 函数,因为当你不再需要一个 `shared_ptr` 时,只需让最后一个引用置空(`ptr.reset()` 或 `ptr = nullptr`)即可,这会让 `shared_ptr` 自动调用析构函数。
阅读全文