Effective C++ 13:以对象(也即用智能指针)来管理资源

今天学习了Effective C++ 中的term13,现在记录一下我的学习理解笔记

首先,这里所谓的资源,即是你一旦用了它,将来就必须还给操作系统,如果不这样,就会发生内存泄漏C++中最常用的资源就是动态分配内存(如果你分配内存却从来不曾归还给它,会导致内存泄露),但是内存知识你必须管理的众多的资源之一。但是不论哪一种资源,重要的是,当你不再使用它时,必须将它还给操作系统。

那么因此,我们就需要遵守term13所说的,用对象来管理资源,其实本质上就是让你去用智能指针去管理资源了。这里term13讲述了auto_ptr还有shared_ptr,并且在最后给予我们读者一个简易,那就是尽量使用shared_prt(我认为还可以尽量使用unique_ptr)来do内存管理,因为他们都能够自动在其所指对象离开作用域时自动调用对应类的构造函数去释放这些在heap堆区开辟的内存,也比较robust。

具体的书上的内容这里不再赘述,当然,以下两条term13的重要结论需要你记住:

一、为了防止资源的泄露,请使用智能指针,它们在构造函数中获得资源并在析构函数中释放资源

二、两个常常被使用的智能指针是auto_ptr还有shared_ptr,但是auto_ptr在复制动作时会使得(被复制的那个对象指针)指向NULL,这并不是我们想要的,因为这样就不能让该类的对象进行正常的复制copy assignment行为了(比如STL中的容器就要求其容器发挥正常的复制行为,因此对于STL中的容器你不可以用auto_ptr来管理资源,用shared_ptr可以),而shared_ptr就是一个较佳的选择,因为其copy行为比较直观,也属于正常的复制行为

参考:

Effective C++ 之条款13

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Fanfan21ya

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值