스마트 포인터-2


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]

이 글을 공유하기

댓글

Designed by JB FACTORY