Chinaunix首页 | 论坛 | 博客
  • 博客访问: 179818
  • 博文数量: 28
  • 博客积分: 30
  • 博客等级: 民兵
  • 技术积分: 954
  • 用 户 组: 普通用户
  • 注册时间: 2012-02-21 10:28
个人简介

站在巨人的肩膀是骗人的

文章分类

全部博文(28)

文章存档

2013年(28)

分类: C/C++

2013-03-15 09:54:38

一般基于c++的stl做应用程序开发不需要判断的原因是:
1. stl所有容器对象分配失败都会抛出alloc异常,让上层去catch处理,你没有办法来重写stl的new,让其不抛异常,。
2. new区别于malloc的就是在于malloc只分配数据,而new还要调用构造函数,new本来的设计意义就是要简化因为内存分配成功与否而引起的逻辑分叉。

c++的设计目的是:高效性,抽象能力,产品化。而这些特点使得c++能胜任那些有效率要求,业务相对复杂的软件开发。而这些软件大部分是较为复杂的业务服务集群。都是着重关注应用层的。

new分配失败的实质是用户态请求内核态分配内存->内存态找不到一块足够大小的空间->返回给用户态分配错误。
而失败的原因就是内存不够,正常情况,我一个服务集群要服务多少用户的上限受bandwidth, cpu, memory限制。而memory基本上是最廉价的。基本来说不会出现不够用的情况。

什么时候需要考虑分配失败?
比如在做内核开发时,内核开发考虑到机制的简洁,而且内核业务相对平坦简单,所以这时一定要处理分配失败的情况。
阅读(2224) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~