c++智能指针有哪些

智能指针是一种特殊的指针,它不仅具有指针的特性,还具有一些额外的功能,可以帮助程序员更方便地管理和使用指针。下面是一些关于智能指针的常用函数和类:

1、unique_ptr:独占锁智能指针。
unique_ptr 可以自动管理内存分配和释放,避免了手动管理内存带来的麻烦和错误。unique_ptr 有两种创建方式:unique_ptr(new T) 和 unique_ptr(T* p),其中 T 必须是 delete 的,即不能是 unique_ptr 或 shared_ptr。
unique_ptr(new T):用于分配新的内存空间并返回指向该空间的智能指针。如果分配内存失败,则会抛出 std::bad_alloc 异常。
unique_ptr(T* p):用于从现有对象中分配内存空间并返回指向该空间的智能指针。如果分配内存失败,则会抛出 std::bad_alloc 异常。unique_ptr 只允许移动(move)而不允许复制(copy),因为它只关心指针所指向的对象是否已经分配了内存。
2、shared_ptr:共享锁智能指针。
shared_ptr 用于管理共享资源的内存,允许多个智能指针指向同一个对象。shared_ptr 有两种创建方式:shared_ptr(new T) 和 shared_ptr(T* p, std::function<void(void)> deleter),其中 deleter 是一个可调用对象,用于在对象不再需要时自动释放内存。
shared_ptr(new T):用于分配新的内存空间并返回指向该空间的智能指针。如果分配内存失败,则会抛出 std::bad_alloc 异常。
shared_ptr(T* p, std::function<void(void)> deleter):用于从现有对象中分配内存空间并返回指向该空间的智能指针。如果分配内存失败,则会抛出 std::bad_alloc 异常。与 unique_ptr 不同,shared_ptr 可以在对象不再需要时自动释放内存,因为它使用了一个可调用对象来管理内存。
3、weak_ptr:弱引用智能指针。
weak_ptr 用于跟踪对象的最后一个引用,即使对象被释放或销毁,它也会保持指向该对象的引用。weak_ptr 只能用于对象类型,而不能用于其他类型,如数组、函数等。
weak_ptr():创建一个弱引用智能指针。
weak_ptr(T* p):用于创建一个指向现有对象的弱引用智能指针,如果对象已经被释放或销毁,则会抛出 std::bad_weak_ptr 异常。weak_ptr 可以用于任何支持引用的类型。
4、unique_ptr:自定义类型智能指针。
创建一个包含单一成员 value 和唯一插槽的结构体类型,插槽点默认为该结

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值