자원은 메모리인데, 이런 메모리를 사용하기 위해서 new 를 사용하게 된다. new로 할당한 자원은 항상 delete 를 해 줘야 하는데, 깜박 깜박하고 잊어 먹는 경우가 있다. 그래서, smart pointer 를 이용하는 것이다. 우선 "자원 획득은 초기화"에 대한 주제로, http://ikpil.com/417 에 포스트 했었는데, 이번 항목은 이렇게 넘겨도 좋을 듯 싶다. 여담으로 http://ikpil.com/720 이 부분도 생각해 봐야 한다. 총평 스마트 포인터를 직접 구현해 보는게 가장 큰 도움이 된다. 요령은 공유되는 카운팅 객체를 만들어 잘 사용 해야 하는 점이다. 아참, 내가 만든 스마트 포인터는 boost::shard_ptr과 싸운 후로, 이 세상에 멸종을 당했다. : )
스마트포인터 검색 결과
내가 C++에 조예가 깊어서 글을 남기는 것이 아니라, Effecitve C++ 을 공부하는 사람들이 이 글을 보고, 도움이 되었으면 하는 생각과, 혹시 내가 틀린것이 있다면 지적해 주시지 않을까 란 생각으로 글을 올리는것임을 미리 밝힙니다. - 최익필 이번 항목은 "클래스 멤버 함수가 호환되는 모든 타입을 받아 들이기 위해선 템플릿을 사용하면 편하다" 를 주제로 이야기 한다. 템플릿의 특성은 "여러 타입의 변수에 있어 하나의 코드로 대응 시킬 수 있다" 이다. 이것은 "모든 타입"에 대해서 동일한 코드로 대응 시킬수 있다는 뜻인데.. 하필이면 "호환되는 모든 타입" 이다. 호환되는 모든 타입이라.. 무슨 뜻일까? 예제코드 1, 호환성이 이해가 될 것이다. // ikpil.com or ikpil.tist..
무슨말?(제목이 조금 길다) 객체 생성 직 후 스마트 포인터에 저장한 다음, 그 스마트 포인터로 사용하라는 뜻 왜!? 메모리 누수가 발생될 수 있기 때문이다. 언제? 함수의 매개변수로써 스마트 포인터를 받을 때, 함수의 매개변수가 초기화가 이루어지는 타이밍이 각각의 컴파일마다 다르기 때문에, 매개변수 초기화가 만약.. 1. 동적 메모리를 할당 예, new CBabo 처럼 2. 함수의 리턴값을 매개변수로 할당 예, sence() 3. 스마트포인터에 동적 메모리를 담는다. 예) Smart_PTR pw에 1번의 리턴 담음 바로 이때 2번에서 예외가 발생하면, .. 1번은 영영 잃어 버리게 된다. 이렇게 매개변수 초기화 타이밍이 각 컴파일마다 다르고 바뀔 수 도 있다. 그래서 매개변수의 초기화가 언제 발생 되는..
최근댓글