RAII介绍及简单模板类

RAII介绍及简单模板类

RAII介绍

什么是RAII?
RAII是Resource Acquisition Is Initialization(wiki上面翻译成 “资源获取就是初始化”)的简称,是C++语言的一种管理资源、避免泄漏的惯用法。利用的就是C++构造的对象最终会被销毁的原则。RAII的做法是使用一个对象,在其构造时获取对应的资源,在对象生命期内控制对资源的访问,使之始终保持有效,最后在对象析构的时候,释放构造时获取的资源。

为什么要使用RAII?
上面说到RAII是用来管理资源、避免资源泄漏的方法。那么,用了这么久了,也写了这么多程序了,口头上经常会说资源,那么资源是如何定义的?在计算机系统中,资源是数量有限且对系统正常运行具有一定作用的元素。比如:网络套接字、互斥锁、文件句柄和内存等等,它们属于系统资源。由于系统的资源是有限的,就好比自然界的石油,铁矿一样,不是取之不尽,用之不竭的,所以,我们在编程使用系统资源时,都必须遵循一个步骤:
1 申请资源;
2 使用资源;
3 释放资源。
第一步和第二步缺一不可,因为资源必须要申请才能使用的,使用完成以后,必须要释放,如果不释放的话,就会造成资源泄漏。

参考

RAII简单模板类

// 模板RAII类
template<typename T>
class myraii
{
public:
	explicit myraii(T* pointtmp) :point(pointtmp) {}
	~myraii() { delete point; }
	T* get() { return point; }
private:
	T* point;
};

void test()
{
	int* p = new int;
	myraii<int> myint(p); 
	// 个人理解:raii相当于把p指针放到栈内存中,
	// test函数退出,指针p也被myraii析构释放
}

你可能感兴趣的:(raii,c++)