Effective C++ 2nd Edition (2)

五. 使用相同形式的new和delete

 

string *pstr = new string[];

delete [] pstr;  //删除一个对象数组

 ------------------------------------

string *pstr = new string;

delete pstr;  //删除单一对象

 

反正需要匹配的,要不内存管理方面就出错咯

 

六. 记得在destructor中以delete对付pointer members

 

按侯高手说法, 就按顺序干这些事情比较安全:

 

1. constructor中指针初始化

2. assignment运算符中将指针原有的内存删除,重新配置一块(见17款)

3. destructor中删除这个指针 delete它

 

七.  为内存不足的状况预做准备

 

这些东东好罗嗦。。。。

 

set_new_handler用法什么玩意的

 

内存不足啊,写个病毒

 

 

八. 撰写operator new 和operator delete时应遵行的公约

 

1. 写自己的operator new时,函数的行为与缺省的new保持一致性.
(1)内存不足时,会调用一个new-handler.
(2)应对new(0)的情况.
(3)避免遮盖"正常"形式的new.

2,C++标准要求:即使用户要求一个0 bytes内存,operator new也应该传回一个合法指针.
注:每个class都有非零大小.

 

3. 如果配置不成功,operator new会一再尝试配置内存,调用错误处理函数.
只有当错误处理函数的指针是null时,operator new才会抛出一个exception.
一个默认operator new的伪代码:

 

 

member operator delete的伪码:


很罗嗦啊。。。

4. non-member operator delete的伪码:


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值