블로그 이미지
이태원에서 사는 다섯식구의 무직 가장. 흰둥에미

카테고리

분류 전체보기 (184)
Itaewon (2)
ryu's?? (1)
20121210이전 (20)
20130827이전 (147)
soo'study (13)
Total37,728
Today0
Yesterday22

항목 13 - 17

20130827이전/EC++ / 2012.12.21 14:45

이제부터 자원관리..


항목 13. 자원 관리에는 객체가 그만.

            특정 자원이 반드시 해제되도록 만들 방법은, 자원을 객체에 넣고 그 자원 해제를 객체의 소멸자에게 맡긴다.

            자원 획득 즉 초기화(RAII), 소멸자를 이용한 자원 해제

            대표적으로 smart pointer, reference-counting smart pointer

            단 동적 배열의 포인터를 스마트 포인터에 넘기는건 안됨. 잘못된 소멸자가 호출됨.


항목 14. 자원 관리 클래스의 복사 동작에 대해 진지하게 고찰하자.

            RAII 객체가 복사될 때,

            (1) 복사를 금지한다. (2) 관리하고 있는 자원에 대해 참조 카운팅을 수행한다. <- 주로 이 두가지를 사용.

            (3) 관리자원을 진짜로 복사. (4) 관리자원의 소유권을 옮김


항목 15. 자원 관리 클래스에서 관리되는 자원은 외부에서 접근할 수 있도록 하자.

            RAII클래스가 관리하는 실제 자원으로의 변경

            명시적 변환 함수 - getter 함수의 구현

            암시적 변환 함수 - oerator TYPE() const { return f; } -> 의도치 않은 타입 변환이 일어날 여지가 있음.


항목 16. new 및 delete를 사용할 때는 형태를 반드시 맞추자.

            new는 delete로, new[]는 delete[] 로 합시다.

            아니면 편하게 stl 컨테이너를 써라.


항목 17. new로 생성한 객체를 스마트 포인터에 저장하는 코드는 별도의 한 문장으로 만들자.

            예외 발생 시 디버깅하기 힘든 자원 누출이 발생할 수 있음.

'20130827이전 > EC++' 카테고리의 다른 글

항목 22 - 25  (0) 2012.12.22
항목 18 - 21  (0) 2012.12.21
항목 13 - 17  (1) 2012.12.21
항목 9 - 12  (0) 2012.12.21
항목 5 - 8  (0) 2012.12.18
항목 1 - 4  (0) 2012.12.18
Posted by 흰둥에미

최근에 달린 댓글

최근에 받은 트랙백

글 보관함