【C++11】shared_ptr

目的

  1. 多个智能指针共同管理同一块内存
  2. 其核心是引用计数,每使用它一次,内部引用计数加1,每析构一次内部的引用计数减1,减为0时,删除所指向的堆内存

表示方式

  1. 共享智能指针的初始化
    a. 共享智能指针构造函数
    shared<类型> 智能指针名(内存)
    int *ptr = new int(500);
    shared_ptr<int> ptr1(ptr);//指向int型内存,shared<类型> 智能指针名(内存)
    shared_ptr<char> ptr2(new char[20]);//使用智能指针管理一块字符数组对应的堆内存
    shared_ptr<int> ptr3;//创建智能指针,但不初始化任何内存
    shared_ptr<int> ptr4(nullptr);/创建智能指针,初始化为空
    
    b. 移动构造和拷贝构造函数
    //移动构造
    shared_ptr<int> move_ptr = move(ptr1);
    //拷贝构造
    shared_ptr<int> copy_ptr = move_ptr;
    
    c. make_shared函数
    //make_shared<类型>(数值)
    shared_ptr<int> makeshare_ptr = make_shared<int>(10);
    
    d. reset()初始化
    class_ptr1.reset();//无参数表示只删除,不重定义初始化
    class_ptr2.reset(new Test("szy"));//先删除,再重定义初始化
    
  2. 共享智能指针的使用方法
    a. 共享智能智能指针的引用计数
    .use_count():查看当前共享智能指针的引用计数
    shared_ptr<int> ptr1(ptr);
    cout << "ptr1的值:" << *ptr1 << ",ptr1管理的内存引用计数:" << ptr1.use_count() << endl
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值