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的伪码:


阅读更多
个人分类: C++
上一篇Effective C++ 2nd Edition (1)
下一篇Effective C++ 2nd Edition (3)
想对作者说点什么? 我来说一句

Effective C++中文版 2nd Edition

2009年02月06日 902KB 下载

More Effective C#(2nd) 无水印pdf

2017年10月02日 1.51MB 下载

Effective Java, 2nd Edition(新版)

2009年05月14日 1.17MB 下载

Effective C# (Covers C# 6.0)

2017年04月04日 16.49MB 下载

没有更多推荐了,返回首页

关闭
关闭