RAII
Resource Acquisition Is Initialization 디자인 패턴은 C++ 창시자인 Bjarne Stroustrup에 의해 제안되었다. RAII 패턴은 개발자가 직접 resource를 관리해야 하는 언어에서 leak을 방지하는 기법이다.
RAII는 어떠한 상황에도 사용한 자원의 반납을 보장해주는 디자인 패턴이다. C++에서는 자신이 속한 scope를 벗어나면 자동으로 사라지는 특징이 있다. 이는 클래스에서도 마찬가지이며 scope를 벗어나면 명시하지 않아도 암시적으로 소멸자를 호출해준다. RAII는 클래스의 소멸자와 생성자에만 국한되는것이 아닌 메모리를 할당했다면 메모리 해제가 보장되는 모든 상황에 적용된다.
C++의 lock_guard
나 smart pointer
는 모두 RAII 패턴을 적용한 구현체이며 메모리 관리가 중요한 C++에는 중요한 패턴이다.