shared_ptr和unique_ptr区别
时间: 2023-04-29 10:03:05 浏览: 112
C++11新特性之智能指针(shared_ptr/unique_ptr/weak_ptr)
5星 · 资源好评率100%
shared_ptr和unique_ptr是C++11中的两种智能指针,它们的主要区别在于所有权的管理方式。
shared_ptr是一种共享所有权的智能指针,多个shared_ptr可以指向同一个对象,当最后一个shared_ptr被销毁时,对象才会被释放。shared_ptr内部维护了一个引用计数器,每次创建一个新的shared_ptr时,引用计数器加1,每次销毁一个shared_ptr时,引用计数器减1,当引用计数器为时,对象被释放。
unique_ptr是一种独占所有权的智能指针,同一时间只能有一个unique_ptr指向一个对象,当unique_ptr被销毁时,对象也会被销毁。unique_ptr不能被拷贝,只能通过移动语义来转移所有权。
因此,shared_ptr适用于多个对象共享同一个资源的情况,而unique_ptr适用于独占资源的情况。
阅读全文