Effective C++ 条款13

资源管理技巧
本文介绍了两种管理资源的方法:std::auto_ptr和std::tr1::shared_ptr。这两种智能指针可以帮助开发者更好地管理各种资源,如内存、文件描述符等,确保在对象生命周期结束时资源能够得到正确释放。

以对象管理资源 Use objects to manage resources

正常情况下,我们都是通过delete p 这种方式来管理资源,比如指针。内存只是资源的一种,还有文件描述器,互斥锁,数据库链接,socket等。这种通过delete 的方式来释放资源没有错误,但是如果代码逻辑复杂,且在delete 之前有return 语句,这样会导致delete 不能执行,就会导致资源无法释放。

所以我们有两种方式来管理:

std::auto_ptr,这个是智能指针,析构函数会自动对其所指对象调用delete。由于auto_ptr 被销毁时会自动删除所指对象,所以我们不能使用多个auto_ptr 指向同一个对象。如果在auto_ptr对象上使用赋值,那么当前对象会被设置为null,赋值操作符左边的对象会获得唯一的控制权。

特别说明:STL容器要求其元素发挥正常的复制行为,因此这些容器容不得auto_ptr。

 

std::tr1::shared_ptrs 允许同时指向一个对象,当所有的对象销毁时,所指的对象会执行delete。

 

以上两种,都是执行delete,不是执行delete []。

 

转载于:https://www.cnblogs.com/lucy-lizhi/p/7478909.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值