算法知识点--智能指针

智能指针

必备知识:

  • ├── 1. 基本概念

  • │ ├── 作用:管理动态内存,防止内存泄漏

  • │ ├── RAII(Resource Acquisition Is Initialization)

  • │ ├── 避免手动 new/delete

  • │ ├── C++11 引入 std::unique_ptrstd::shared_ptr

  • │ ├── C++14 引入 std::make_unique

  • │ ├── C++17 引入 std::shared_ptrstd::make_shared

  • ├── 2. std::unique_ptr(独占指针)

  • │ ├── 只能有一个所有者

  • │ ├── 不可复制(拷贝构造和拷贝赋值删除)

  • │ ├── 可移动(支持 std::move

  • │ ├── 用法:

  • │ │ ├── std::unique_ptr<T> p(new T(...));

  • │ │ ├── auto p = std::make_unique<T>(...);

  • │ ├── 释放方式:超出作用域自动释放

  • ├── 3. std::shared_ptr(共享指针)

  • │ ├── 允许多个 shared_ptr 共享同一对象

  • │ ├── 采用 引用计数 机制(use_count)

  • │ ├── std::make_shared<T>(推荐,减少额外开销)

  • │ ├── 释放方式:引用计数为 0 时自动释放

  • │ ├── 循环引用问题:

  • │ │ ├── 解决方案:使用 std::weak_ptr

  • ├── 4. std::weak_ptr(弱指针)

  • │ ├── 解决 std::shared_ptr 循环引用问题

  • │ ├── 不能直接访问对象,需 lock() 转换为 std::shared_ptr

  • │ ├── expired() 判断对象是否已释放

  • ├── 5. std::auto_ptr(C++98,已废弃)

  • │ ├── C++11 已废弃,C++17 移除

  • │ ├── 拷贝后原指针变空,容易引发问题

  • ├── 6. 自定义删除器

  • │ ├── 适用于 s

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值