'smart pointer'에 해당되는 글 1건

  1. 2010.09.09 스마트 포인터(smart pointer) (2)
Programming/C++ / STL2010.09.09 15:12
음.. 예전에 어떤 분의 블로그에서 스마트 포인터 란것을 들었지만
어떤건지 알지 못했는데 C++/STL 공부하면서 문득 떠올라 검색을 하니 아래와 같이 상큼하게 정의가 내려져있다.

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]

'Programming > C++ / STL' 카테고리의 다른 글

C++ 레퍼런스 변수(reference variable)  (4) 2010.09.15
C++0x  (0) 2010.09.15
std::vector 포인터  (0) 2010.09.13
스마트 포인터(smart pointer)  (2) 2010.09.09
C++ 강좌/문법/reference  (4) 2010.09.09
STL 그리고 Template  (0) 2010.09.09
Posted by 구차니

댓글을 달아 주세요

  1. 제 프로젝트에는 직접 구현해서 쓰는데 서로 가리키는 문제만 안내면... 정말 요긴하게 쓰여요.
    아무래도 일일히 new delete 해주는건 깜밖 잊었다간 메모리 누수가 와장창 나기 때문에... ( 나중에 찾기도 힘듬 ).
    특히 게임쪽에는 정말 요긴하죠. 텍스쳐나 메시 같은 자원나 씬그래프 노드 관리를 스마터 포인터로 자동화 해제 해두면+_+)b 라능~

    2010.09.10 08:48 신고 [ ADDR : EDIT/ DEL : REPLY ]
    • 확실히 메모리 누수가 생기면 대략 난감하죠 ^^;
      저야 임베디드 분야라서 누수가 좀 치명적인데 그거보다 치명적인건 바로 메모리 침범이죠 ㅋ

      valgrind 이녀석도 한번 익혀봐야 하는데 영 손이 안가네요 ㅠ.ㅠ

      2010.09.10 08:53 신고 [ ADDR : EDIT/ DEL ]