回顾经典Effective C++13-17

本文探讨了资源管理的重要性,并介绍了使用智能指针(如tr1::shared_ptr和auto_ptr)来有效管理资源的方法。文章重点讲解了如何通过对象管理避免内存泄漏,以及在资源复制时应注意的问题。

这一章主要内容是资源的管理:

notice 13:以对象管理资源,主要是防止内存泄露。RALL对象管理资源:tr1::share_ptr 和auto_ptr.

1获得资源后立刻放进管理对象。

2管理对象运用析构函数确保资源释放。


notice 14:RALL复制资源可选:禁止复制,计数复制。并注意深浅copy问题。


notice 15:对于要求访问原始资源,RALL应该提供对应方法,eg get();

对原始资源的访问分为显示访问和隐式访问。显示相对更安全些。

notice 16:new delete采用相同的形式。

notice 17:以独立语句将newed对象植入智能指针。

processWidget(std::tr1::shared_ptr<Widget>(new Widget),priority());
//---------------------------------------
std::tr1::shared_ptr<Widget> pw(new Widget);
processWidget(pw,priority())
针对up1,编译器执行顺序可以是:

a.执行 new Widget

b.调用 priority

c.调用 tr1::shared_ptr

b过程若是发生异常,便可能引发内存泄露。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值