没有合适的资源?快使用搜索试试~ 我知道了~
首页C++中的RAII机制详解
资源详情
资源评论
资源推荐

C++中的中的RAII机制详解机制详解
主要介绍了C++中的RAII机制详解,RAII是Resource Acquisition Is Initialization的简称,是C++语言的一种管理资
源、避免泄漏的惯用法,需要的朋友可以参考下
前言前言
在写C++设计模式——单例模式的时候,在写到实例销毁时,设计的GC类是很巧妙的,而这一巧妙的设计就是根据当对象的
生命周期结束时会自动调用其析构函数的,而这一巧妙的设计也是有专业的名词的——RAII。那以下将围绕RAII,全面的讲解
RAII的相关知识。
什么是什么是RAII??
RAII是Resource Acquisition Is Initialization的简称,是C++语言的一种管理资源、避免泄漏的惯用法。利用的就是C++构造的
对象最终会被销毁的原则。RAII的做法是使用一个对象,在其构造时获取对应的资源,在对象生命期内控制对资源的访问,使
之始终保持有效,最后在对象析构的时候,释放构造时获取的资源。
为什么要使用为什么要使用RAII??
上面说到RAII是用来管理资源、避免资源泄漏的方法。那么,用了这么久了,也写了这么多程序了,口头上经常会说资源,那
么资源是如何定义的?在计算机系统中,资源是数量有限且对系统正常运行具有一定作用的元素。比如:网络套接字、互斥
锁、文件句柄和内存等等,它们属于系统资源。由于系统的资源是有限的,就好比自然界的石油,铁矿一样,不是取之不尽,
用之不竭的,所以,我们在编程使用系统资源时,都必须遵循一个步骤:
1.申请资源;
2.使用资源;
3.释放资源。
第一步和第二步缺一不可,因为资源必须要申请才能使用的,使用完成以后,必须要释放,如果不释放的话,就会造成资源泄
漏。
一个最简单的例子:
复制代码 代码如下:
#include <iostream>
using namespace std;
int main()
{
int *testArray = new int [10];
// Here, you can use the array
delete [] testArray;
testArray = NULL ;
return 0;
}
我们使用new开辟的内存资源,如果我们不进行释放的话,就会造成内存泄漏。所以,在编程的时候,new和delete操作总是
匹配操作的。如果总是申请资源而不释放资源,最终会导致资源全部被占用而没有资源可用的场景。但是,在实际的编程中,
我们总是会各种不小心的就把释放操作忘了,就是编程的老手,在几千行代码,几万行中代码中,也会犯这种低级的错误。
再来一个例子:
复制代码 代码如下:
#include <iostream>
using namespace std;
bool OperationA();
bool OperationB();
int main()
{
int *testArray = new int [10];
// Here, you can use the array
if (!OperationA())
















安全验证
文档复制为VIP权益,开通VIP直接复制

评论0