如何写出高效C++(定制new和delete和杂项讨论)
来源:互联网 发布:java如何实现线程同步 编辑:程序博客网 时间:2024/05/29 11:10
49.了解new-handle的行为
set_new_handler允许客户制定一个函数,在内存分配无法获得满足时被调用。
void outOfMem()
{
std::cerr<<"Unable to satisfy request for memory\n";
std::abort();
}
int main()
{
std::set_new_handler(outOfMem);
int* pBigDataArray = new int[10000000000L];
}
如此在内存分配不足的时候就会调用outOfMem函数。
50.了解new和delete的合理替换时机
对于编译器默认给予的new和delete,因为是编译器之前就写好的,所以有时候过于死板,这种时候为了能够让我们的程序更高效,我们可以考虑自己写new和delete来替换,而且自己写的new和delete还可以检测错误,强化效能,手机使用上的统计数据等等作用。
51.编写new和delete时需要固守常规。
new的规则:
(1)应该内含一个无穷循环
(2)如果在无穷循环中一直不满足内存需求就一直调用new-handle
(3)要有能力处理0bytes操作(可以就把它当作1来操作)
(4)class的专属版本还应该处理比正确大小更大的错误,这时候可以考虑去调用标准版本的new去实现。
delete的规则:
(1)收到null指针时什么也不做
(2)处理比正确大小更大的错误申请(标准delete)
52.写了placement new也要写placement delete
最后一章~一鼓作气地搞定他
53.不要轻忽编译器的警告
最好让你的代码争取到没有任何警告。
还有不同的编译器可能对同一件事物发出不同的警告或者忽视他。
54:让自己熟悉包括TR1在内的标准程序库
55.让自己熟悉boost
- 如何写出高效C++(定制new和delete和杂项讨论)
- [C++]定制new和delete
- 定制new和delete
- 定制new和delete
- Effective C++ --8 定制new和delete && 9杂谈讨论
- Effective C++(八)定制new和delete
- effective C++: 8.定制new和delete
- Effective C++(八)定制new和delete
- 《Effective C++》定制new和delete
- C++(8)定制new和delete
- (Effective C++)第八章 定制new和delete(Customizing new and delete)
- 8.定制new和delete
- Part8:定制new和delete
- <<Effective C++>>读书笔记8: 定制new和delete
- C++:new和delete
- new和delete【C++】
- C++中placement new和delete讨论
- Effective C++笔记(11)—定制new和delete
- Request的getParameter和getAttribute方法的区别
- Search Insert Position 插入位置
- BenignCertain:一款可以远程提取思科VPN密钥的黑客工具(含泄漏文件下载地址)
- 初识点剖(基于点的树上分治)
- 分布式Session与cookie
- 如何写出高效C++(定制new和delete和杂项讨论)
- WOJ1005 - Holding Animals
- 内核开发:第一个hello world 模块
- OkHttp的使用详解
- 一周一书一文(20160820):拆掉思维里的墙——古典
- Spring加载Hibernate失败:Error creating bean with name 'sessionFactory' defined in ServletContext... Null
- Jquery判断复选框选中
- window启动休眠与关闭休眠dos命令
- 继承与派生