부재 : 함수 내부의 동적 메모리 할당은 auto_ptr(의 성격으로 이해하면 더 좋을듯) 을 사용 해라!

이유
1. 소멸자는 객체 소멸시 반드시 호출 되는 성질을 이용하기 때문이다.
(소멸자가 호출 안되는 에외도 있으나, 그건 차후에 설명하겠다고 스캇은 말한다.)

구현 방법
1. 동적메모리 할당시 반환되는 메모리를 인자로 같는 객체의 생성자를 만들고, 소멸자에 이 인자를 지워 준다.

효과
1. 함수 내부에서 예외가 발생하여, 함수 루틴이 종류가 되어도 객체는 소멸되기 때문에 삭제가 된다.

대표적 사례
1. 기본 지원되는 auto_ptr 을 사용하면 손쉽게 구현 가능하다.
2. auto_ptr 에 대해서 인터넷 검사면, 그 개념이 잡힐것이다. 간단한것은 스스로 만들어 써도 되지만 MEC++ 읽는 사람이라면, 최소한의 클래스 보정은 해야 한다는것을 알수 있을 것이다.

auto_ptr 관련
1. http://yesarang.tistory.com/35
2. http://www.memorycarrier.com/old_www/y2k2/auto_ptr.html
3. http://kldp.org/node/63416
4. http://www.filewiki.net/tc/entry/stdauto_ptr-Smart-Pointer-%EC%9D%B4%EC%A7%80%EB%A7%8C
5. http://www.winapi.co.kr/clec/cpp4/36-3-2.htm

등등 검색하면 주의점과 그 사용법에 대해서 충분히 알수 있을것이다.

코드 : babo_ptr

more..

질문
1. 리로스 획득을 맡는 클래스의 생성자에서 예외가 발생하면 어떻게 될까요?
2. 소멸자에서 리소스를 자동으로 해제하다가 예외가 발생하면 어떻게 될까요?
3. 생성자와 소멸자에 특수한 테크닉이 필요한것은 아닐까요?
posted by 농사를 짓는 게임 프로그래머 최익필

댓글을 달아 주세요