五. 使用相同形式的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的伪码: