auto_ptr自动资源管理器
對於使用new動態配置的資源,在不使用時必須記得delete,以釋放記憶體空間,然而動態記憶體配置很容易發生忘了delete,或是對同一個記憶體位址delete兩次(例如一個物件被指定給兩個指標),或是對一個已經被delete的位址再作讀寫動作。
C++標準函式庫中提供auto_ptr,可以協助您動態管理new而建立的物件,要使用auto_ptr,您要含入memory表頭檔,例如:
auto_ptr可以指向一個以new建立的物件,當auto_ptr的生命週期結束後,所指向的物件之資源也會被釋放,在建立auto_ptr時必須指定目標物件之型態,例如:
auto_ptr<string>sPtr (new string("caterpillar"));
操作auto_ptr就像操作沒有使用auto_ptr的指標一樣,例如:
if(sPtr->empty())
cout << "字串為空" <<endl;
您也可以建立一個未指向任何物件的auto_ptr,例如:
未指向任何物件的auto_ptr不可以取值,否則會發生不可預期之結果,既然不可取值,如何判斷它是否有指向物件呢?您可以使用get()函式,它會傳回所指向物件的位址,如果傳回0,表示不指向任何物件,如果不指向任何物件,您可以使用reset()來讓它指向一個物件,例如:
iPtr.reset(new int(100));
}
reset()可以接受一個指標或是0表示不指向任何物件,reset()會先delete目前指向的物件,然後重新指向新的物件,您也可以使用release()釋放auto_ptr管理所指向物件的職責。
auto_ptr可以使用另一個auto_ptr來建立,這會造成所有權的轉移,例如:
auto_ptr<SafeArray>ptr2(ptr1);
當使用ptr1來建立ptr2時,ptr1不再對所指向物件的資源釋放負責,職責交給了ptr2,在使用指定運算時,也有類似的行為,例如:
auto_ptr<SafeArray>ptr2(new SafeArray(20));
ptr2= ptr1;
ptr2所指向的物件會先被delete,然後ptr1的屬性會複製至ptr2,也就是ptr1所指向的物件,現在由ptr2指向它了,ptr1不再負責所指向物件的資源釋放。
auto_ptr的資源維護動作是以inline的方式來完成,也就是在編譯時會被擴展開來,所以使用auto_ptr並不會犧牲效率。
最後要注意的是,auto_ptr不能用來管理動態配置而來的陣列,如果用它來管理動態配置而來的陣列,結果是不可預期的。
auto_ptr自动资源管理器相关推荐
- “解决方案资源管理器”中不能自动选择正在编辑的文档
本来正在编辑的文档应该在"解决方案资源管理器"中自动选中的,但是我的VS2005机器好像没有这个功能,后来发现 "工具->选贤"里边的"项目和解 ...
- Win11系统资源管理器自动重启怎么办
Win11系统是目前非常受欢迎的电脑操作系统,很多用户都想升级体验,当我们在使用Win11系统的时候,经常会打开资源管理器来对文件夹进行操作等,不过有时候可能会遇到资源管理器自动重启的问题,这该如何解 ...
- WIN7 WIN10 资源管理器不能自动刷新的解决方法
WIN7 和 WIN10资源管理器偶尔不能自动刷新 具体现象为: 1.新建文件夹或文件后,不能立即显示出新建的文件,必须右击刷新或者按F5刷新资源管理器才能显示出新建的文件 2.删除文件或文件夹后,由 ...
- Win7资源管理器自动展开左侧文件夹如何设置
我们在使用资源管理器时,通常需要一步一步的展开文件夹.那么,有没有更加便捷的方法呢?其实是有的,快看看下面的设置方法吧. 设置方法: 1.在桌面按下"WIN+E"组合键启动资源管理 ...
- 清除windows文件资源管理器FTP自动登录状态
在Windows的文件资源管理器登录FTP,设置保存密码自动登录,这样在下次登录就免去了输入密码的步骤,很方便. 但是想换另一个FTP账号登录,由于之前的保密了账号密码,会自动登录到之前的账号,不会出 ...
- Windows 10资源管理器经常无故自动重启
问题描述 笔者使用的是Windows 10 专业版,之前有过一段时间在系统(软件)更新后出现资源管理器经常无故自动重启,表现为偶尔右键点击时,整个任务栏和桌面图标会消失,几秒之后再重新加载. 解决方案 ...
- win10资源管理器一直自动重启,桌面和任务栏不断刷新,无法操作
今天电脑忽然崩溃了,重启以后桌面及任务栏就一直在刷新,无法进行任何的操作,就搜了下修复方法,记录一下,亲测可用. 搜到的方法是下面这样的: 1.右键点击任务栏上的Windows图标,选择[Micros ...
- elementui如何在input 框中搜索_在 Windows 10 中的文件资源管理器中删除搜索历史记录...
Windows 资源管理器带有搜索功能,用户可以通过该功能找到特定的文件或文件夹.默认情况下,您在搜索框中进行的所有搜索都会保存到其历史记录中.下次您在搜索框中输入内容时,它将在下拉对话框中显示最近输 ...
- 资源管理器方法访问FTP服务
老方最近换了工作,做了乙方的项目经理,但技术实施的活也是要做的哈. 说话,最近在一个部队做项目,项目之外,协助他们建立了一个FTP服务器,权限什么的设置凭着老方的通天晓地(板砖,你慢慢的拍)的能耐,很 ...
- 简单的Windows资源管理器——Java版本
一直有很多小伙伴私信我要社团管理系统的源码,这个暂时无法分享,根据社团管理系统文章的思路完全是可以自己写出来的哦~ 最近一个小伙伴私聊我需要一个java小程序,现将之前写的一个Windows资源管理器 ...
最新文章
- 重磅发布 | 30+ 阿里巴巴云原生「顶流」,给你一堂《云原生技术实践公开课》
- js代码计算济南出租车打车费用
- 如何在 Dapper.NET 中使用事务?
- php querystring使用,node.js中的querystring.parse方法使用说明_node.js
- js for foreach 快慢_js基本搜索算法实现与170万条数据下的性能测试
- 微信独立精彩互换抢红包系统源码ThinkPHP开源版
- python高清大图代码_python2的代码从吉卜力网页上下载高清图片
- less 使用小结!笔记!
- 如何锁定计算机桌面图标,解决win7、win10系统怎么锁定电脑桌面图标
- 双色球历史数据下载最新2003年2021年
- CS229与《统计学习方法》的EM算法理解和比较,收敛性证明
- 密歇根大学张阳团队开发全球首个蛋白质和RNA分子通用结构比对算法
- C++学习笔记-STL
- matlab如何画波特图,matlab画波特图
- WinDbg 常用指令
- APC型光纤活动连接器有何特点?适合使用在什么场景?
- 浅谈Fiddler4 如何进行Idea抓包操作
- R语言:优雅、卓越的统计分析及绘图环境
- 马云:刚来公司不到一年的人,谁提…
- 数字图像处理之校园交通标志检测与识别