智能指针是C++中一种利用RAII机制(后面解释),通过对象来管理指针的一种方式. 在C++中,动态开辟的内存需要我们自己去维护,在出函数作用域或程序异常退出之前,我们必须手动释放掉它,否则的话就会引起内存泄漏. 例如:我们用指针变量来创建对象时,需要手动来删除它 事实上,即使我们非常谨慎,但有时候 ...
分类:
编程语言 时间:
2017-03-31 21:47:39
阅读次数:
176
全称是“Resource Acquisition is Initialization”,翻译为资源获取就是初始化。 其实就是利用栈上的局部对象在离开作用域时会自动释放的原理,在临时对象创建时初始化资源,或者将资源交给对象管理,当临时对象析构时释放资源,因为临时对象在离开其作用时会自动析构,也就会自动 ...
分类:
其他好文 时间:
2017-02-21 21:47:27
阅读次数:
187
1. 自己实现一个资源管理类 Item 13中介绍了 “资源获取之时也是初始化之时(RAII)”的概念,这个概念被当作资源管理类的“脊柱“,也描述了auto_ptr和tr1::shared_ptr是如何用堆资源来表现这个概念的。然而并不是所有资源都是在堆上创建的,对于这种资源,像auto_ptr和t ...
分类:
编程语言 时间:
2017-02-19 11:04:36
阅读次数:
175
1.不要手动释放从函数返回的堆资源 假设你正在处理一个模拟Investment的程序库,不同的Investmetn类型从Investment基类继承而来, 进一步假设这个程序库通过一个工厂函数(Item 7)来给我们提供特定Investment对象: 正如注释所表述的,当createInvesmen ...
分类:
编程语言 时间:
2017-02-18 09:45:01
阅读次数:
195
要知道什么是智能指针,首先了解什么称为 “资源分配即初始化” what RAII:RAII—Resource Acquisition Is Initialization,即“资源分配即初始化” 在《C++ Primer》这样解释的,“通过定义一个类来封装资源的分配和释放,可以保证正确释放资源” 核心 ...
分类:
其他好文 时间:
2017-01-04 20:04:57
阅读次数:
138
1. 错误类型 1.1. rm: cannot remove '/var/lib/docker/aufs': Device or resource busy 2. 过程 2.1. 用docker rmi 命令删除了全部镜像,准备一切重头再来,发现有些残留目录。 2.2. 然后只能删掉所有运行目录然后 ...
分类:
其他好文 时间:
2016-11-09 12:27:15
阅读次数:
2098
auto_ptr是C++标准库中(<utility>)为了解决资源泄漏的问题提供的一个智能指针类模板(注意:这只是一种简单的智能指针) auto_ptr的实现原理其实就是RAII,在构造的时候获取资源,在析构的时候释放资源,并进行相关指针操作的重载,使用起来就像普通的指针。 std::auto_pt ...
分类:
其他好文 时间:
2016-09-27 15:01:00
阅读次数:
196
RAII(ResourceAcquisitionIsInitialization)资源分配即初始化,定义一个类来封装资源的分配和释放,在构造函数完成资源的分配和初始化,在析构函数完成资源的清理,可以保证资源的正确初始化和释放。------------------------------------------------------------------------..
分类:
其他好文 时间:
2016-08-26 23:02:44
阅读次数:
198
总结一些常用的方法,思考如何分析一个程序的时间消耗。 1. Trace Log 这个是大家最常用,也是最简单和有效地方法。通常是在函数的开始和结束的位置加入Log, 最后通过Log记录时间统计函数的时间消耗。 有时嫌2次log太麻烦,我们可以通过RAII进行封装: class CTimeCostDe ...
分类:
其他好文 时间:
2016-08-22 02:02:36
阅读次数:
264
转载:http://www.jellythink.com/archives/101 什么是RAII? RAII是Resource Acquisition Is Initialization的简称,是C++语言的一种管理资源、避免泄漏的惯用法。利用的就是C++构造的对象最终会被销毁的原则。RAII的做 ...
分类:
其他好文 时间:
2016-08-12 21:22:05
阅读次数:
214