boost库在工作(4)作用域智能指针scoped_ptr之三
来源:互联网 发布:2017的网络流行语 编辑:程序博客网 时间:2024/05/22 13:52
标准模板库里的智能指针std::auto_ptr,一般情况下,只适合在函数中使用,当离开这个函数时,就可以自动删除分配的资源。典型的情况有两种,一种是当一个函数代码比较多,判断条件很多,这样出口很多。另一种就是带有异常机制的代码,因为异常没有抛出来之前,没有办法确定那行代码会突然间就退出来,这种情况下对资源管理,会给软件开发人员带来很大的压力,即使很有经验的开发人员,也有点防不防的,会花大量的时间去解决这个问题,因而导致项目一推再推。下面通过代码来看看这两种情况是什么样子,以后只要碰到这两种情况,就可以毫不犹豫采用智能指针的方案来解决了。
第一种情况:
//多出口的函数,最适合使用智能指针。//软件开发人员: 蔡军生 2013-02-03void MoreIf(void){std::auto_ptr< int > nVal(new int);//这里很多逻辑判断。if (1){} else{if (7){//这里退出函数。return;}}if (2){} else{}if (3){}else{//这里退出函数。return;}for (int i = 0; i < 1000; ++i){if (4){//这里退出函数。return;}}}
像这个例子里,如果没有使用智能指针,需要在所有出口的地方,都需要添加删除分配资源的操作。特别当软件已经开发完成之后,给客户试用了,而客户又需要添加一种特别的判断,再来维护这些代码时,忘记添加删除资源,导致软件发送到客户那里又出错了,再次挨客户批,是吃力不讨好的事情。面对这种情况,无论是有经验的开发人员,还是刚入门的开发人员,都应立即使用智能指针吧!也许有人会问,为什么一定要采用分配资源的方式来分配对象,而不直接构造栈对象来解决呢?这个问题就得了解栈与堆内存的区别了,简单来说,栈内存分配比较小,一般为
- boost库在工作(4)作用域智能指针scoped_ptr之三
- boost库在工作(4)作用域智能指针scoped_ptr之三
- boost库在工作(3)作用域智能指针scoped_ptr之二
- boost库在工作(5)作用域智能指针scoped_ptr之四
- boost库在工作(6)作用域智能指针scoped_ptr之五
- boost库在工作(3)作用域智能指针scoped_ptr之二
- boost库在工作(5)作用域智能指针scoped_ptr之四
- boost库在工作(6)作用域智能指针scoped_ptr之五
- boost库在工作(2)作用域智能指针scoped_ptr之一
- boost库在工作(2)作用域智能指针scoped_ptr之一
- Boost智能指针之scoped_ptr
- 智能指针(三)之scoped_ptr
- 作用域指针 boost::scoped_ptr
- 智能指针boost::scoped_ptr
- Boost智能指针:scoped_ptr
- boost::scoped_ptr智能指针
- 详解Boost库智能指针(shared_ptr && scoped_ptr && weak_ptr )
- boost库:智能指针(auto_ptr、scoped_ptr、shared_ptr)浅谈
- ubuntu下安装eclipse并配置启动命令行
- Linux 注册系统服务
- 九度OJ 题目1169:比较奇偶数个数
- JS:《Microsoft JScript 运行时错误: 缺少 '}'》解决方案
- 寒假刷题之7——波纹
- boost库在工作(4)作用域智能指针scoped_ptr之三
- JTree用法及JTree使用经验总结
- Directx, 绘制节点要注意顺序
- 基于IEEE802.15.4的Ad Hoc网络快速组网研究[图]
- linux下mount软驱/u盘/光驱命令
- HttpClient 学习整理
- [OS] 第三章 处理机调度与死锁
- WebDriver中执行JavaScript
- js 验证各种格式类型的正则表达式