share_ptr和unique_ptr
时间: 2023-10-16 13:11:43 浏览: 102
shared_ptr和unique_ptr是C++中两种智能指针的实现。
unique_ptr是一种独占式智能指针,它确保在同一时间只有一个指针可以指向一个对象。它的拷贝构造函数和赋值运算符被禁用,这意味着不能直接拷贝或赋值一个unique_ptr对象。这个特性确保了资源的独占性,可以有效地避免内存泄漏和多重删除问题。
shared_ptr是一种共享式智能指针,它通过使用引用计数来管理所指向的对象。当有一个新的shared_ptr指向同一个对象时,引用计数会加1。当shared_ptr离开作用域时,引用计数会减1。当引用计数变为0时,资源会被释放。这个特性使得多个指针可以共享同一个对象,从而避免了资源的重复释放和悬空指针的问题。
需要注意的是,在移动构造shared_ptr时,原有的shared_ptr会被置空,但引用计数不会发生变化。这意味着移动构造后,原有的shared_ptr不再指向任何对象。
总结一下:
- unique_ptr是一种独占式智能指针,确保同一时间只有一个指针可以指向一个对象。
- shared_ptr是一种共享式智能指针,使用引用计数来管理所指向的对象,可以实现多个指针共享同一个对象。
- 在移动构造shared_ptr时,原有的shared_ptr会被置空,但引用计数不会发生变化。
来源: https://en.cppreference.com/w/cpp/memory/unique_ptr
来源: https://en.cppreference.com/w/cpp/memory/shared_ptr
来源: https://blog.csdn.net/u011784767/article/details/79879281
阅读全文