什么是RAII
- 其他博客中很多写的是“RAII是Resource Acquisition Is Initialization的简称,是C++语言的一种管理资源、避免泄漏的惯用法。”,如果理解什么是RAII后再看这句话就很容易懂,但如果什么都不懂,直接看这一句应该是看不懂的。
- 我的直白的理解就是,一种编程规范,或者一种编程技巧,不是具体的语法之类的,就是和设计模式一样,是一种技巧。
详解
- 下面解释定义:一种资源管理、避免泄露的惯用法
- 比如使用一个指针后,在不使用的时候要将它释放,但是有时候可能会忘记释放指针,就会造成内存泄露,如下面的例子,如果不调用delete s,就会造成s占用的资源一直不释放,直到程序死亡。
void test(){ Studen* s=new Student(); //其他处理代码 delete s; }
- 使用RAII机制,就是自定义管理,将要管理的东西疯转成对象,在对象的作用域结束的时候,调用对象的析构函数,自动释放资源,就不用程序员自己释放,简单来说就是这样。
- 为了方便,就直接使用C++11的share_prt做例子
void test(){ shared_ptr<Studen> s =make_share<Studen> (); //其他处理代码 // delete s; 不需要这一句 }
- 这只是简单的了解RAII,RAII还有一些坑,这些不想整理了,看看其他的博客吧。