항목 17: new로 생성한 객체를 스마트 포인터에 저장하는 코드는 별도의 한 문장으로 만들자
무슨말?(제목이 조금 길다) 객체 생성 직 후 스마트 포인터에 저장한 다음, 그 스마트 포인터로 사용하라는 뜻 왜!? 메모리 누수가 발생될 수 있기 때문이다. 언제? 함수의 매개변수로써 스마트 포인터를 받을 때, 함수의 매개변수가 초기화가 이루어지는 타이밍이 각각의 컴파일마다 다르기 때문에, 매개변수 초기화가 만약.. 1. 동적 메모리를 할당 예, new CBabo 처럼 2. 함수의 리턴값을 매개변수로 할당 예, sence() 3. 스마트포인터에 동적 메모리를 담는다. 예) Smart_PTR pw에 1번의 리턴 담음 바로 이때 2번에서 예외가 발생하면, .. 1번은 영영 잃어 버리게 된다. 이렇게 매개변수 초기화 타이밍이 각 컴파일마다 다르고 바뀔 수 도 있다. 그래서 매개변수의 초기화가 언제 발생 되는..
책 정리/Effective C++ 3판
2008. 6. 3. 23:30
최근댓글