shared_ptr unique_ptr 选择
时间: 2023-10-29 15:08:10 浏览: 103
shared_ptr
shared_ptr 和 unique_ptr 都是 C++11 中引入的智能指针,它们的主要作用是管理动态分配的内存,避免内存泄漏和悬空指针等问题。它们的区别在于:
1. 所有权:shared_ptr 是共享所有权的智能指针,可以有多个 shared_ptr 指向同一个对象,当最后一个 shared_ptr 被销毁时,对象才会被释放;unique_ptr 是独占所有权的智能指针,同一时间只能有一个 unique_ptr 指向一个对象,当 unique_ptr 被销毁时,对象也会被释放。
2. 大小:shared_ptr 比 unique_ptr 更大,因为 shared_ptr 内部需要维护一个引用计数器,记录有多少个 shared_ptr 指向同一个对象。
3. 性能:unique_ptr 的性能比 shared_ptr 更好,因为它不需要维护引用计数器。
因此,如果需要多个指针共享同一个对象,应该使用 shared_ptr;如果只需要一个指针管理一个对象,应该使用 unique_ptr。
阅读全文