C++没有内存回收机制,每次程序员new出来的对象需要手动delete,流程复杂时可能会漏掉delete,导致内存泄漏。于是C++引入智能指针,可用于动态资源管理,资源即对象的管理策略。 一、智能指针类别 智能指针主要有三种:shared_ptr,unique_ptr和weak_ptr。 share ...
分类:
其他好文 时间:
2018-02-25 12:58:35
阅读次数:
235
静态内存用来保存局部的static对象和类static数据成员,以及定义在任何函数之外的变量。除了静态内存和栈内存,每个程序还有一个内存池,这部分内存被称作自由空间或堆,用来存储动态分配的对象。动态内存的管理通过new和delete运算符实现。新的标准定义了两种智能指针类型来管理动态对象,share ...
分类:
其他好文 时间:
2018-02-07 15:01:02
阅读次数:
163
一、关键 每个shared_ptr所指向的对象都有一个引用计数,它记录了有多少个shared_ptr指向自己 shared_ptr的析构函数:递减它所指向的对象的引用计数,如果引用计数变为0,就会销毁对象并释放相应的内存 引用计数的变化:决定权在shared_ptr,而与对象本身无关 二、引用计数初 ...
分类:
其他好文 时间:
2017-11-17 18:35:23
阅读次数:
204
一、智能指针类型&智能指针 1. 标准库提供了两种智能指针类型(来管理动态分配的对象) 2. 智能指针 智能指针就是一个变量、一个对象,即智能指针类型的实例化(比如在整型 int 和变量 i 中,智能指针就类似 i) 3. 智能指针与指针 智能指针的行为类似常规指针 区别:智能指针负责自动释放所指向 ...
分类:
其他好文 时间:
2017-10-26 11:40:18
阅读次数:
134
智能指针(smart pointer)是存储指向动态分配(堆)对象指针的类,用于生存期控制,可以确保自己主动正确的销毁动态分配的对象,防止内存泄露。它的一种通用实现技术是使用引用计数(reference count)。智能指针类将一个计数器与类指向的对象相关联,引用计数跟踪该类有多少个对象共享同一指 ...
分类:
编程语言 时间:
2017-08-17 13:06:10
阅读次数:
250
智能指针是什么,他的真面目就是一个类生成的对象,这个类中包含了基本的重载->、*等一些指针形态的用法,最主要的是这个类里面有一个指针参数:所有智能指针类中都有一个explicit构造函数,以指针作为参数。比如auto_ptr的类模板原型为: template<class T> class auto_ ...
分类:
其他好文 时间:
2017-07-08 20:19:18
阅读次数:
158
智能指针类 指针使用过程中,经常会出现内存泄漏和内存多次被释放。解决方案:boost库的智能指针项目开发中,要求开发者使用预先编写的智能指针类对象代替C语言中原生的指针。智能指针思想工程中的智能指针是一个类模板通过构造函数接管申请的内存通过析构函数确保堆内存被及时释放通过重载指针运算符*和->来模拟 ...
分类:
其他好文 时间:
2017-03-17 23:45:57
阅读次数:
245
智能指针类模板[图]
scoped_ptr[图]
boostscoped_ptr的正确构造
boostshared_ptr[图]
boostshared_ptr构建.png[图]
boostshared_ptr可以多次引用指针
boostweekptr[图]
boostweek_ptr
boostintrusive侵入式指针
boostmake_shared省略显式的new
boostenable_shared_from_this
bo..
分类:
编程语言 时间:
2016-12-06 14:42:25
阅读次数:
304
auto_ptr是C++标准库中(<utility>)为了解决资源泄漏的问题提供的一个智能指针类模板(注意:这只是一种简单的智能指针) auto_ptr的实现原理其实就是RAII,在构造的时候获取资源,在析构的时候释放资源,并进行相关指针操作的重载,使用起来就像普通的指针。 std::auto_pt ...
分类:
其他好文 时间:
2016-09-27 15:01:00
阅读次数:
196
1、智能指针本质上是一个对象,这个对象可以像原生的一样来进行使用。原因是智能指针对象对应的类中,将指针相关的操作都进行了重载操作处理,所以才会达到这种像是原生的效果。2、智能指针的意义:现在C++开发库中最重要的类模板之一C++中自动内存管理的主要手段能够在很大程..
分类:
编程语言 时间:
2016-09-06 23:38:27
阅读次数:
286