智能指针
智能指针
- 智能指针分配在栈中,但是指向的对象在堆中
- 智能指针的ref count是线程安全的,但是修改数据,数据是线程不安全的
shared_ptr
- 内部存在两个指针
- 一个指向分配的对象
- 一个指向控制块
- reference count(引用计数)
- weak count(弱计数)
- other data(custom deleter, allocator)
shared_ptr<Buffer> buf1 = std::make_shared<Buffer>("Hello world"); |
unique_ptr
- 独占指针,没有copy语义
weak_ptr
解决的问题
- 可以解决shared_ptr循环引用的问题(A指向B,B指向A)
- 多线程环境下, 先锁定资源(lock), 再判断资源是否可用(expire);
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 LZY的Code生活!