在介绍scoped_ptr之前,我们先回顾一下前两篇文章的内容. 首先,智能指针采用RAII机制,通过对象来管理指针,构造对象时,完成资源的初始化;析构对象时,对资源进行清理及汕尾. auto_ptr,通过转移管理权来完成对象的拷贝与赋值,在实际开发中并不实用. 回顾完智能指针的背景及auto_pt ...
分类:
编程语言 时间:
2017-04-01 23:00:07
阅读次数:
219
智能指针是C++中一种利用RAII机制(后面解释),通过对象来管理指针的一种方式. 在C++中,动态开辟的内存需要我们自己去维护,在出函数作用域或程序异常退出之前,我们必须手动释放掉它,否则的话就会引起内存泄漏. 例如:我们用指针变量来创建对象时,需要手动来删除它 事实上,即使我们非常谨慎,但有时候 ...
分类:
编程语言 时间:
2017-03-31 21:47:39
阅读次数:
176
在C++中学习过程中,我们都知道:delete和new必须配对使用(一一对应):delete少了,则内存泄露,多了麻烦更大。Qt作为C++的库,显然是不会违背C++的前述原则的。可是:在Qt中,我们很多时候都疯狂地用new,却很少用delete,缺少的delete去哪儿了?!注:本文暂不涉及智能指针(sm..
分类:
其他好文 时间:
2017-03-24 16:08:47
阅读次数:
177
智能指针类 指针使用过程中,经常会出现内存泄漏和内存多次被释放。解决方案:boost库的智能指针项目开发中,要求开发者使用预先编写的智能指针类对象代替C语言中原生的指针。智能指针思想工程中的智能指针是一个类模板通过构造函数接管申请的内存通过析构函数确保堆内存被及时释放通过重载指针运算符*和->来模拟 ...
分类:
其他好文 时间:
2017-03-17 23:45:57
阅读次数:
245
1.auto_ptr 和 scoped_ptr 的异同 a 和 s 都是通过析构函数去 delete T* 实现自动释放内存。a 可以转移所有权,但是 s 不可以 2. scoped_array sa 管理 new [] 分配的内存,析构时使用delete [] 因为 sa 不能动态增长,没有ite ...
分类:
其他好文 时间:
2017-03-15 18:52:01
阅读次数:
155
转自 http://blog.csdn.net/yang_xian521/article/details/7108387 记得我在OpenCV学习笔记(四)——新版本的数据结构core里面讲过新版本的数据结构了,可是我再看这部分的时候,我发现我当时实在是看得太马虎了。对于新版本的数据结构,我再说说。 ...
分类:
其他好文 时间:
2017-03-14 16:32:24
阅读次数:
177
一、简介 由于 C++ 语言没有自动内存回收机制,程序员每次 new 出来的内存都要手动 delete。程序员忘记 delete,流程太复杂,最终导致没有 delete,异常导致程序过早退出,没有执行 delete 的情况并不罕见。 用智能指针便可以有效缓解这类问题,本文主要讲解参见的智能指针的用法 ...
分类:
编程语言 时间:
2017-03-08 21:34:11
阅读次数:
254
项目中用到了智能指针,但是要在智能指针指向的类中获取此类的shared_ptr指针传给其引用的类,结果出现了问题, 测试代码如下: (包括错误解释) 结论: 在赋值过程中,用形如 的方式取得本指针的shared_ptr指针,会产生新的shared_ptr指针,,,而不是你想要的那个指针(类外定义的那 ...
分类:
编程语言 时间:
2017-02-27 18:58:36
阅读次数:
284
转自:http://blog.csdn.net/malong777/article/details/48974559 weak_ptr是一种不控制对象生存周期的智能指针,它指向一个shared_ptr管理的对象...它不会改变shared_ptr的引用计数——《C++ Primer .5th》。很明 ...
分类:
其他好文 时间:
2017-02-16 01:10:03
阅读次数:
202