1. 在类内部定义的函数默觉得inline,内联函数应该在头文件里定义,由于其定义对编译器必须是可见的,以便编译器可以在调用点内联展开该函数的代码。此时,仅有函数原型是不够的。 2.assert 3.异常 4.因为流对象不能复制。因此不能存储在容器中;因为流不能复制。因此形參或返回类型也不能为流类型 ...
分类:
编程语言 时间:
2017-07-01 20:51:49
阅读次数:
214
RAII技术被认为是C++中管理资源的最佳方法,进一步引申,使用RAII技术也可以实现安全、简洁的状态管理,编写出优雅的异常安全的代码。 ...
分类:
编程语言 时间:
2017-06-12 10:50:44
阅读次数:
339
众所周知。C++中对堆内存的申请与释放全然由用户来控制,这就造成用户在使用的时候常常造成内存泄漏、野指针、反复释放等常见的挂掉问题,所以我们有必要提供一套机制。使得用户仅仅需申请对应的内存,不用管释放的问题,事实上这属于著名的RAII(Resource Acquisition Is Initiali ...
分类:
编程语言 时间:
2017-05-30 12:26:54
阅读次数:
189
RAII,它是“Resource Acquisition Is Initialization”的首字母缩写。也称为“资源获取就是初始化”,是c++等编程语言常用的管理资源、避免内存泄露的方法。它保证在任何情况下,使用对象时先构造对象,最后析构对象。 RAII的好处在于它提供了一种资源自动管理的方式, ...
分类:
编程语言 时间:
2017-05-23 00:34:13
阅读次数:
283
CriticalSectionWrapper是一个接口类 class CriticalSectionWrapper { public: // Factory method, constructor disabled static CriticalSectionWrapper* CreateCriti ...
分类:
其他好文 时间:
2017-04-25 23:24:09
阅读次数:
223
w https://zh.wikipedia.org/wiki/RAII RAII要求,资源的有效期与持有资源的对象的生命期严格绑定,即由对象的构造函数完成资源的分配(获取),同时由析构函数完成资源的释放。在这种要求下,只要对象能正确地析构,就不会出现资源泄露问题。 https://en.wikip ...
分类:
其他好文 时间:
2017-04-21 19:02:29
阅读次数:
191
题记:内存管理一直是C/C++程序的红灯区。关于内存管理的话题,大致有两类侧重点,一类是内存的正确使用,例如C++中new和delete应该成对出现,用RAII技巧管理内存资源,auto_ptr等方面,很多C/C++书籍中都使用技巧的介绍。另一类是内存管理的实现,如linux内核的slab分配器,S ...
分类:
其他好文 时间:
2017-04-08 21:27:19
阅读次数:
251
本文我们主要来总结一下前文介绍过的智能指针相关原理及实现,顺便补充一下前文未提到的shared_ptr删除器部分的内容. 总结: 1.智能指针,通过RAII机制,构造对象时完成资源的初始化,析构对象时,对资源进行清理和汕尾. 2.auto_ptr,防止拷贝/赋值对象后,析构时多次delete对象导致 ...
分类:
编程语言 时间:
2017-04-03 18:12:00
阅读次数:
240
在开始本文内容之前,我们再来总结一下,前文内容: 1.智能指针采用RAII机制,在构造对象时进行资源的初始化,析构对象时进行资源的清理及汕尾. 2.auto_ptr防止拷贝后析构释放同一块内存,采用"转移所有权"的方法.(实际开发中auto_ptr并不实用) 3.scoped_ptr与auto_pt ...
分类:
编程语言 时间:
2017-04-03 11:30:02
阅读次数:
250
在介绍scoped_ptr之前,我们先回顾一下前两篇文章的内容. 首先,智能指针采用RAII机制,通过对象来管理指针,构造对象时,完成资源的初始化;析构对象时,对资源进行清理及汕尾. auto_ptr,通过转移管理权来完成对象的拷贝与赋值,在实际开发中并不实用. 回顾完智能指针的背景及auto_pt ...
分类:
编程语言 时间:
2017-04-01 23:00:07
阅读次数:
219