一般基于c++的stl做应用程序开发不需要判断的原因是:
1. stl所有容器对象分配失败都会抛出alloc异常,让上层去catch处理,你没有办法来重写stl的new,让其不抛异常,。
2. new区别于malloc的就是在于malloc只分配数据,而new还要调用构造函数,new本来的设计意义就是要简化因为内存分配成功与否而引起的逻辑分叉。
c++的设计目的是:高效性,抽象能力,产品化。而这些特点使得c++能胜任那些有效率要求,业务相对复杂的软件开发。而这些软件大部分是较为复杂的业务服务集群。都是着重关注应用层的。
new分配失败的实质是用户态请求内核态分配内存->内存态找不到一块足够大小的空间->返回给用户态分配错误。
而失败的原因就是内存不够,正常情况,我一个服务集群要服务多少用户的上限受bandwidth, cpu, memory限制。而memory基本上是最廉价的。基本来说不会出现不够用的情况。
什么时候需要考虑分配失败?
比如在做内核开发时,内核开发考虑到机制的简洁,而且内核业务相对平坦简单,所以这时一定要处理分配失败的情况。
阅读(2223) | 评论(0) | 转发(0) |