C++RAII
来源:http://www.tudoupe.com时间:2022-07-25
C++RAII
RAII,在c++中引用( 链接 )的解释就是资源获取即初始化(Resource Acquisition Is Initialization),它是C++编程技术。简单来说就是,用于初始化构造函数的资源类,构造函数释放相应的资源,使用C++本地变量自动释放机制,可以减少一定数量的内存泄漏.
简单例子
例子一
这是最简单的例子,构造函数中新的内存,析构函数释放内存。但是代码有个问题,如果构造器中的内存分配失败,会怎样呢?构造函数没有返回值,如何确定内存分配是否成功?查了一些资料之后(
构造函数的异常处理
),构造函数出错,消息只能通过例外向外部发送。
请看例子二
例子二
例子二加上了异常,在此例子中, 模拟了内存分配失败.运行结果如上。从结果来看,还存在一个问题,Child_test,已经实现的儿童对象,异常之后没有分析,如果子对象也要求内存,所以有记忆泄漏的风险。事实上, 我们可以通过添加主函数来防止捕获.
如下例子三
例子三
实例三个主要函数捕捉了异常,并通常分析了由RaiTest构造器建模的儿童测试。
标准库的包装器
标准库中RAII的典型应用如下:标准库提供多个RAII包,以管理用户提供的资源:
- std::unique_ptr和 std::shared_ptr用于管理动态分配的内存,或管理由用户提供调试器的通用指针所代表的任何资源;
- std::lock_guard, std::unique_lock, 和 std::shared_lock用于管理相互排斥对象。
最常见的是 std::lock_guard,当多个线程锁定和解锁时常用
上一篇:MFC Windows 程序设计[209]之图解编辑器(附源码)
下一篇:【解决】CommandNotFoundError: Your shell has not been properly c
相关新闻
- 2022-08-04 WPF的由来
- 2022-08-04 Win11勒索软件防护怎么打开?Win11安
- 2022-08-04 Windows系统jdk的配置
- 2022-08-04 Windows10 OneNote怎么重新登录?如何重
- 2022-08-04 超好用的 Windows 效率工具推荐
- 2022-08-04 Windows如何在CMD或PowerShell中配置代理
- 2022-08-04 powershell和cmd对比
- 2022-08-04 【QT】Windows下QT下载安装
- 2022-08-04 windows下 C++ 实现类属性的get和set方
- 2022-08-04 Win11快速助手在哪里?Win11打开快速
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
