C++은 자바와 같은 가비지 컬렉션(GC) 기능이 없어서, new로 동적 할당한 객체를 매번 delete를 써서 수동으로 삭제해야 하는 건 아실 겁니다. 조심하지 않으면 엄청난 메모리 누수(leak)가 나버리는 버그가 발생할 가능성이 있죠. (이런 버그를 잡기위해서 바운즈 체커나 코드 가드와 같은 프로그램이 나온거죠.) 부스트 라이브러리의 스마트 포인터에 대한 문서는 다음 링크를 참고하세요. http://boost.org/libs/smart_ptr/smart_ptr.htm http://boost.org/libs/smart_ptr/shared_ptr.htm 위의 예제를 boost::shared_ptr을 써서 고치면 다음과 같습니다. void doSomething() { typedef boost::shared_ptr<Widget> SPW; // "Shared_Ptr to Widget" vector<SPW> vwp; for (int i = 0; i < SOME_MAGIC_NUMBER; ++i) vwp.push_back(SPW(new Widget)); ... } // vwp가 스코프에서 벗어나는 순간, 자동으로 메모리를 해제합니다. [링크 : http://www.borlandforum.com/impboard/impboard.dll?action=read&db=bcb_qna&no=22740] |
간단하게 말하자면, free() 를 알아서 해주는 일종의 "프레임웍"이나" 라이브러리"라는 의미.
머.. 그래도 인간이 직접 적절하게 free() 해주는게 장땡
[링크 : http://www.iamcorean.net/131]
이 글을 공유하기