45、让 C++ 编程更安全:智能指针与其他安全特性

让 C++ 编程更安全:智能指针与其他安全特性

1. 重温智能指针

智能指针是 C++ 中管理堆内存的强大工具。在使用智能指针时,我们可以通过 use_count() 方法查看共享资源的引用计数。例如,当有 pers1 wpers1 pers2 时,其中非弱指针引用共享资源,引用计数为 2,而弱指针不会增加引用计数。这一特性使得弱指针能够打破循环依赖链。当依赖循环中插入弱指针时,共享资源的引用计数不受其影响,当只剩下指向该资源的弱指针且引用计数为 0 时,资源可以被删除。

以下是一个 weak_ptr 指针示例的输出:

Miss Gabby Doone
# references: 1
# references: 1
Miss Gabby Doone
Dr. Gabby Doone
# references: 2
# references: 2
# references: 2
Person destructor

使用智能指针的好处是堆内存会自动管理,当最后一个对内存的引用被移除时,内存会被销毁和删除,弱指针不会增加引用计数。

2. 探索互补概念 - RAII

RAII(Resource Acquisition Is Initialization)是一种与智能指针互补的编程习惯用法。它将(可能共享的)资源的生命周期与对象的生命周期绑定,要求在使用资源之前先获取它,有助于控制共享资源

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值