RAII

Posted atoman

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RAII相关的知识,希望对你有一定的参考价值。

Resource Acquisition Is Initialization, often referred to by the acronym RAII (or, erroneously, RIIA), is a popular design pattern in several object oriented programming languages like C++, D and Ada. The technique was invented by Bjarne Stroustrup,[1] to deal with resource deallocation in C++. In this language, the only code that can be guaranteed to be executed after an exception is thrown are the destructors of objects residing on the stack. Resources therefore need to be tied to the lifespan of suitable objects. They are acquired during initialization, when there is no chance of them being used before they are available, and released with the destruction of the same objects, which is guaranteed to take place even in case of errors.
RAII is vital in writing exception-safe C++ code: to release resources before permitting exceptions to propagate (in order to avoid resource leaks) one can write appropriate destructors once rather than dispersing and duplicating cleanup logic between exception handling blocks that may or may not be executed.
http://en.wikipedia.org/wiki/Resource_Acquisition_Is_Initialization

 

1. used for apply/release semaphore

2. used for apply/release memory in hop

3. do {} while(0)

以上是关于RAII的主要内容,如果未能解决你的问题,请参考以下文章

C++RAII机制(智能指针原理)

c++智能指针的不断演化

Constructor Acquires, Destructor Releases Resource Acquisition Is Initialization