무슨말?(제목이 조금 길다)
객체 생성 직 후 스마트 포인터에 저장한 다음, 그 스마트 포인터로 사용하라는 뜻

왜!?
메모리 누수가 발생될 수 있기 때문이다.

언제?
함수의 매개변수로써 스마트 포인터를 받을 때, 함수의 매개변수가 초기화가 이루어지는 타이밍이 각각의 컴파일마다 다르기 때문에,

매개변수 초기화가 만약..
1. 동적 메모리를 할당 예, new CBabo 처럼
2. 함수의 리턴값을 매개변수로 할당  예, sence()
3. 스마트포인터에 동적 메모리를 담는다. 예) Smart_PTR<CBABO> pw에 1번의 리턴 담음


바로 이때 2번에서 예외가 발생하면, .. 1번은 영영 잃어 버리게 된다. 이렇게 매개변수 초기화 타이밍이 각 컴파일마다 다르고 바뀔 수 도 있다.

그래서
매개변수의 초기화가  언제 발생 되는지 알수 없어, RAII 객체에 우선 담아야 한다.

자 결론!

이것만은 잊지 말자!
1. new로 생성한 객체를 스마트 포인터로 넣는 코드는 별도의 한 문장으로 만들자.


관련 링크
http://redinlife.egloos.com/1615637
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 라이프코리아트위터 공유하기
  • shared
  • 카카오스토리 공유하기

댓글을 달아 주세요

">