[Effective C++ 3판] Chapter 3. 자원 관리 (항목 13~17)
Chapter 3. 자원 관리 정보처리산업기사 시험 & 시골에 제사지내러 내려가느라 포스팅이 늦었습니다 ㅠㅜ 이번 Chapter는 자원 관리입니다. C++의 자원 관리 철학은 RAII이죠~ 객체가 생성되고 소멸될 때 생성자와 소멸자가 호출되는 원리를 이용하여 자원과 객체의 life cycle을 동일시함으로서 더욱 더 편리하고 안정적으로 자원 관리를 할 수 있습니다! 항목 13 : 자원 관리에는 객체가 그만! std::shared_ptr의 소멸자는 기본적으로 내부적으로 delete를 사용합니다. (delete[]가 아니라) 그래서 동적할당된 배열에 대해 std::shared_ptr를 사용하면 안됩니다. 대신에 std::vector나 C++11의 std::array 를 사용함으로서 raw array를 대신하는 방법이 있습니다. 또는 std::shared_ptr의 생성자에 custom deleter를 등록하는 방법이 있습니다. http://stackoverflow.com/questions/13061979/shared-ptr-to-an-array-should-it-be-used [ 이것만은 잊지 말자! ] - 자원 누출을 막기 위해, 생성자 안에서 자원을 획득하고 소멸자에서 그것을 해제하는 RAII객체를 사용합시다. - 일반적으로 널리 쓰이는 RAII 클래스는 tr1::shared_ptr (C++11부터 표준이 되어 std::shared_ptr로 쓰면 된다.) 그리고 auto_ptr (C++11부터 deprecated되었다. 대신에 대체재로서 std::unique_ptr를 사용하면 된다.) 입니다. 항목 14 : 자원 관리 클래스의 복사 동작에 대해 진지하게 고찰하자. RAII객체가 복사될 때 어떤 동작이 이루어져야 할까요? - 복사를 금지합니다. (Uncopyable 클래스 상속, =delete 활용) - 관리하고 있는 자원에 대해 참조 카운팅을 수행합니다. (custom deleter와 함께 std::shared_ptr를 활...