编程交流与学习--Effective C++学习之"内存管理条款6、7、8、9、10"

本文探讨了C++中析构函数内使用delete操作符的原因及其潜在风险,并介绍了如何优雅地处理内存分配失败的情况。此外,还讨论了自定义new和delete操作符时应遵循的最佳实践,包括避免隐藏标准new操作符的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

条款6:析构函数里对指针成员调用delete

为什么呢?这样可以形成递归析构,使得每个类只管理自身的内存,简单易维护。奇怪的是,我曾经写过一个比较复杂的代码,析构函数递归调用会导致错误(忘了是什么错误),但是显示地用for、while遍历却没问题,或许是栈造成地。如果想提高效率,还是自己把握吧。

条款7:预先准备好内存不够的情况

为什么呢?提高安全性。同时作者提供了一些处理内存异常的范例代码。

 条款8: 写operator new和operator delete时要遵循常规

为什么呢?要假扮,当然要扮得像点,否则就找扁了。

条款9: 避免隐藏标准形式的new

为什么呢?作者谈的是避免class内的new函数定义隐藏了全局new。

条款10: 如果写了operator new就要同时写operator delete

为什么呢?做戏要做全套。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值