C++RAII机制
C++RAII机制
概念:
RAII(Resource Acquisition Is Initialization)机制
:使用局部对象来管理资源的技术,称之为资源获取即初始化,由C++之父Bjarne Stroustrup提出,是C++中一种管理资源,避免泄漏的机制RAII例子:C++中的lock_guard类就是对互斥锁mutex资源的管理,我们也可以自定义封装一个资源管理模板类
RAII实质
:其实就是利用栈的资源回收机制以及类对象销毁调用析构函数机制,使用一个局部类对象来管理资源,当函数结束时会将栈中资源回收,这个时候类对象会因为销毁而调用类析构函数,我们只需要在类的析构函数中实现销毁资源的功能,即可隐式回收资源。作用
:- 可以用一个局部对象管理资源,则资源的生命周期是由操作系统来管理,无需人工介入
- 可以避免忘记销毁资源或者程序产生异常和回滚,无法正确释放掉资源,造成死锁或内存泄漏
RAII做法:
- 在对象构造时申请获取资源
- 使用资源
- 在对象析构时释放资源
lock_guard类使用示例:
1 |
|
自定义封装示例:
1 |
|
C++RAII机制
https://moonfordream.github.io/posts/C-RAII机制/