每天一点C++——怎么用智能指针管理数组

本文探讨如何使用shared_ptr和unique_ptr这两种智能指针来管理C++中的数组。shared_ptr不支持直接下标访问,需要通过get获取指针访问,而unique_ptr则可以直接下标访问。在使用shared_ptr时,需要指定deleter以匹配new[]的内存释放规则。C++17开始,shared_ptr已支持数组管理。
摘要由CSDN通过智能技术生成

智能指针方便了内存的管理,那么怎么来管理一个数组呢?
有两种方式:shared_ptr和unique_ptr。

首先我们介绍一下两中方式的不同:

  1. shared_ptr不支持下标访问,成员访问只能通过get获取指针后再去访问成员
  2. shared_ptr定义的数组需要指定deleter,因为shared_ptr的默认deleter是删除管理的对象,但是,使用new[]进行分配内存时,需要用delete [] 而不是delete。
  3. unique_ptr可以直接使用下标访问,

需要注意的是shared_ptr在c++17已支持.

下面上代码:

shared_ptr

void ArrayDeleter(TestClass *array) {
   
    delete [] array;    
}
int main()
{
   
    const size_t size = 100;
    
    //使用函数指定
    std::shared_ptr<TestClass []> spFunc(new TestClass[size], ArrayDeleter);
    
    //使用lambda
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值