Effective C++回顾(4)

本文回顾了《Effective C++》中的条款7和8,关注在内存不足时的处理策略和自定义`operator new`与`operator delete`的注意事项。作者提到现代机器配置和操作系统通常能有效处理内存问题,但程序员仍需考虑内存分配失败的可能性。条款8中强调了自定义内存操作函数时的规范,包括处理内存不足、允许分配0字节、基类继承问题和删除0指针。建议通过在旧版操作系统上测试来检查内存问题,并在实现中添加assert和注释以提高代码质量。
摘要由CSDN通过智能技术生成

条款7:为内存不足的状况预做准备

作者讲了程序如何在内存不足的情况下保证做到正确的处理,可是以我自己多年的程序开发经验来看,这些处理没有什么太大的必要,至少我是从来没有这么做过:

1.  现在的机器配置相对而言应该是比较高的

2.  操作系统的能力,虚拟内存做了一些保障

3.  对于需要大量内存操作的程序,我们可能会采取一些优化方式来处理,如采用文件来模拟内存

正如作者在条款最后讲的一样,不管是采用什么样的处理方式,内存不足情况下是返回0还是返回异常都不是最重要,重要是你要对于内存分配的函数要有概念,你不能假设内存总是能够成功分配,要能够正确的处理内存不足情况。

对于如何更好的检查内存不足的情况,最好是把你的程序放到Windows98之前的操作系统中去运行,如果这样都没出现什么问题,程序基本上也就不太会有问题。

 

条款8:撰写operator newoperator delete时就遵行的公约

几个注意事项:

1.  正确处理内存不足的情况

2.  允许分配0字节的内存,事实上是分配出1字节的内存

3.  如果基类中实现了newdelete操作,注意继承而引起的一些问题

4.  允许delete0的内存

我觉得第三点尤其重要,在类中设计newdelete操作时,要充分考虑到这个问题。在设计的时候也可以借鉴文中提供的例子,不过我觉得最好还是在if (size != sizeof(Base)中增加assert来出一些警示。因为很多的情况下,实现BaseDerived的可能不是同一个人,同时增加一些注释也是非常有必要的。

 

待续

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值