33、C++智能指针与移动语义详解

C++智能指针与移动语义详解

1. unique_ptr的工作原理及使用

unique_ptr 是一种智能指针,它通过原始指针管理堆上分配的对象或数组。当智能指针超出作用域、使用 operator= 分配新指针或使用 release() 方法放弃所有权时,会进行适当的资源释放。默认情况下,使用 operator delete 销毁管理的对象,但用户在构造智能指针时可以提供自定义删除器。

以下是 unique_ptr 的一些关键特性和使用示例:
- 创建 unique_ptr :可以使用构造函数直接创建,也可以使用 C++14 引入的 std::make_unique() 函数模板。例如:

// 使用构造函数创建并初始化数组
std::unique_ptr<int[]> pa(new int[3]{ 1,2,3 });
// 使用 make_unique 创建并初始化数组
std::unique_ptr<int[]> pa = std::make_unique<int[]>(3);
for (int i = 0; i < 3; ++i)
    pa[i] = i + 1;
  • 避免内存泄漏 std::make_unique() 的主要优点是在某些异常抛出的情况下避免潜在的内存泄漏。例如:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值