27.C++- 智能指针】的更多相关文章

智能指针 在C++库中最重要的类模板之一 智能指针实际上是将指针封装在一个类里,通过对象来管理指针. STL中的智能指针auto_ptr 头文件: <memory> 生命周期结束时,自动摧毁指向的内存空间 不能指向堆数组(因为auto_ptr的析构函数删除指针用的是delete,而不是delete[]) auto_ptr的构造函数为explicit类型,所以只能显示初始化,比如: auto_ptr<)); //初始化正确,创建ap1类模板对象,使类模板里的指针为int*型,并指向1的地址…
auto_ptr<string> p1(new string ("auto") : //#1 auto_ptr<string> p2; //#2 p2 = p1; //#3 在语句#3中,p2接管string对象的所有权后,p1的所有权将被剥夺.前面说过,这是好事,可防止p1和p2的析构函数试图刪同—个对象: 但如果程序随后试图使用p1,这将是件坏事,因为p1不再指向有效的数据. 下面来看使用unique_ptr的情况: unique_ptr<string…
0.目录 1.数组类模板 1.1 类模板高效率求和 1.2 数组类模板 1.3 堆数组类模板 2.智能指针类模板 2.1 使用智能指针 2.2 智能指针类模板 3.单例类模板 3.1 实现单例模式 3.2 单例类模板 4.小结 1.数组类模板 模板参数可以是数值型参数(非类型参数): 数值型模板参数的限制: 变量不能作为模板参数 浮点数不能作为模板参数 类对象不能作为模板参数 ... 本质: 模板参数是在编译阶段被处理的单元,因此,在编译阶段必须准确无误的唯一确定. 1.1 类模板高效率求和 用…
转自:http://blog.jobbole.com/88279/ 众所周知,C/C++语言本身并不支持垃圾回收机制,虽然语言本身具有极高的灵活性,但是当遇到大型的项目时,繁琐的内存管理往往让人痛苦异常.现代的C/C++类库一般会提供智能指针来作为内存管理的折中方案,比如STL的auto_ptr,Boost的Smart_ptr库,QT的QPointer家族,甚至是基于C语言构建的GTK+也通过引用计数来实现类似的功能.Linux内核是如何解决这个问题呢?同样作为C语言的解决方案,Linux内核采…
shared_ptr 这里有一个你在标准库中找不到的—引用数智能指针.大部分人都应当有过使用智能指针的经历,并且已经有很多关于引用数的文章.最重要的一个细节是引用数是如何被执行的—插入,意思是说你将引用计数的功能添加给类,或者是非插入,意思是说你不这样做.Boost shared_ptr是非插入类型的,这个实现使用一个从堆中分配来的引用计数器.关于提供参数化策略使得对任何情况都极为适合的讨论很多了,但是最终讨论的结果是决定反对聚焦于可用性.可是不要指望讨论的结果能够结束. shared_ptr完…
Android系统的智能指针(轻量级指针.强指针和弱指针)的实现原理分析 分类: Android 2011-09-23 00:59 31568人阅读 评论(42) 收藏 举报 androidclassdebuggingdeleteobject Android系统的运行时库层代码是用C++来编写的,用C++来写代码最容易出错的地方就是指针了,一旦使用不当,轻则造成内存泄漏,重则造成系统 崩溃.不过系统为我们提供了智能指针,避免出现上述问题,本文将系统地分析Android系统智能指针(轻量级指针.强…
一.boost 智能指针 智能指针是利用RAII(Resource Acquisition Is Initialization:资源获取即初始化)来管理资源.关于RAII的讨论可以参考前面的文章.在使用boost库之前应该先下载后放在某个路径,并在VS 包含目录中添加.下面是boost 库里面的智能指针: (一).scoped_ptr<T> 先来看例程:  C++ Code  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23…
 C++ Code  12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511…
 转载:http://www.cnblogs.com/felixYeou/archive/2008/08/27/1277250.html 快速导航 一. 回顾历史二. 智能指针简介三. Delphi中的interface四. Delphi中智能指针的实现五. interface + 泛型 = 强类型的智能指针!六. 智能指针与集合七. 注意事项八. 总结 本随笔所有源代码打包下载 一.回顾历史 在c++中,对象可以创建在栈里,也可以创建在堆里.如: class CTestClass { publ…
Qt提供了丰富的容器类型,如:QList.QVector.QMap等等.详细的使用方法可以参考官方文档,网上也有很多示例文章,不过大部分文章的举例都是使用基础类型:如int.QString等.如果我们要存储一个对象类型,应该如何做呢?—— 当然是和int类型一样操作,因为这些容器类都是泛型的.不过,我们今天要讨论的不是容器类的使用用法,而是容器存储的对象内存如何释放的问题. (这里提到了对象类型是指 Class/Struct,可以继承自QObject,也可以是普通的C++类.) 下面以QList…