자원은 메모리인데, 이런 메모리를 사용하기 위해서 new 를 사용하게 된다. new로 할당한 자원은 항상 delete 를 해 줘야 하는데, 깜박 깜박하고 잊어 먹는 경우가 있다. 그래서, smart pointer 를 이용하는 것이다. 우선 "자원 획득은 초기화"에 대한 주제로, http://ikpil.com/417 에 포스트 했었는데, 이번 항목은 이렇게 넘겨도 좋을 듯 싶다. 여담으로 http://ikpil.com/720 이 부분도 생각해 봐야 한다. 총평 스마트 포인터를 직접 구현해 보는게 가장 큰 도움이 된다. 요령은 공유되는 카운팅 객체를 만들어 잘 사용 해야 하는 점이다. 아참, 내가 만든 스마트 포인터는 boost::shard_ptr과 싸운 후로, 이 세상에 멸종을 당했다. : )
RAII 검색 결과
해당 글 2건
항목 13 : 자원은 개체가 가지게끔 하라. RAII와 스마트 포인터를 활용하라. ( Ensure resources are owned by objects. Use explicit RAII and smart pointers. )
책 정리/C++ Coding Standards : C++ 코딩의 정석
2009. 2. 15. 14:09
항목 14: 자원 관리 클래스의 복사 동작에 대해 진지하게 고찰하자
왜냐하면? RAII 방식은 객체의 scope(존재 할 수 있는 범위)를 이용하여, 자원을 관리하는데, 객체를 복사 했을때, 소멸자를 어떻게 정의하느냐에 따라서, 전기적 쇼크를 프로그래머에게 줄지, 램에게 줄지 결정지을수 있기 때문이다. .. 전기적 쇼크는 항상 램에게만 줘야 한다. 일반적인 사례 1. 복사를 금지한다 - 유니크한 객체를 관리할 때 사용 한다. 2. 관리하고 있는 자원에 대해 참조 카운팅을 수행한다. - 해당 자원을 가르키는 포인터만을 복사 할때, 카운팅 한다. 까다롭지만 가장 효율적인 방법이다. 3. 관리하고 있는 자원을 진짜로 복사한다. - 보통 문자열 객체에 대해 관리할때 사용 한다. 클래스 인터페이스를 무시할 경우가 많이 생기기 때문이다. []연산자 때문에.. 4. 관리하고 있는 자..
책 정리/Effective C++ 3판
2008. 6. 1. 22:57
최근댓글