스마트포인터(2)
-
[effective STL] 항목 33 : remove 같은 알고리즘 사용할 때 포인터 컨테이너 주의
동적으로 할당한 객체를 관리하는 컨테이너가 있을 때 주의해야 한다는 것이다. 상황(예시)widget 객체를 동적으로 여러개 선언하고 이를 관리하는 v라는 widget 포인터 백터가 있다고 가정한다. 12345678910111213clss Widget{public: ... bool isCertified() const; ...}; vector v; ...v.push_back(new Widget);...cs widget 객체 중에 certified 되지 않은 위젯을 지우고 싶다! 12v.erase(remove_if(v.begin(), v.end(), not1(mem_fun(&Widget::isCertified))), v.end());cs not1과 mem_fun 함수들을 사용해 본 적은 없는데.. 대충 아닐때..
2016.02.29 -
[C++] 스마트포인터(Smart Pointer)
RAII RAII는 C++에서 자주 쓰이는 idiom으로 자원의 안전한 사용을 위해 객체가 쓰이는 스코프를 벗어나면 자원을 해제해주는 기법이다. C++에서 heap에 할당된 자원은 명시적으로 해제하지 않으면 해제되지 않지만, stack에 할당된 자원은 자신의 scope가 끝나면 메모리가 해제되며 destructor가 불린다는 원리를 이용한 것이다. 스마트 포인터 정의 자원관리 기법에 사용되며 메모리 자원 관리와 경계 검사 등 기존 포인터 변수에서 기능이 추가 된 추상 데이터 타입. 스마트 포인터의 특징 자원을 획득한후, 자원 관리 객체에게 넘긴다 자원관리 객체는 자신의 소멸자를 사용하여 자원이 확실하게 해제 되도록 한다 버그 보완(안전), 자동청소, 자동 초기화를 해준다 스마트 포인터는 C++에서 안전하..
2015.07.14