이 포스트를 만든 목적

  • 정리 좀 해보려고

이 포스트의 준비물

  • Firefox 4.0 beta6
  • Winamp 5.xx - 노래 들으면서 썻기 때문에 :)

참고 서적

  • Modern C++ Design
  • Effective C++ 3판
  • C++ Standard Library 튜토리얼 레퍼런스
  • 프로그래머의 길, 멘토에게 묻다

참조 링크

내용

4부까지 ChunkGroup 을 구현하는데 초점을 두었다면, 5부터는 ChunkGroup 을 쉽게 사용하는 방법과 인터페이스에 대한 이야기를 한다. Modern C++ Design 에서는 ChunkGroup 을 통합 관리 객체를 만들고, 별도의 인터페이스를 구현해서 사용하고 있지만, 인터페스가 고정적인 면이 있어, 나는 아예 템플릿으로 박아 두었다.

맛보기 코드

smallobjallocator.hpp 부가 설명

ChunkGroupInstance 는 싱글턴이다.

  • 지역변수로 static으로 두어, 싱글턴을 구현한 것이다. 가장 빠르게, 가장 단순한 형태의 싱글턴이다.
    - 더 좋은 싱글턴(할당/해제가 자유로운)도 있고, 속도가 더 빠른 싱글턴도 있다.(static 변수가 있으면, 상대적으로 느리다.)

SmallObjAllocator 는 상속으로만 사용해야 한다.

  • 책에선 통합 SmallObjAllocator 을 구현하여, ChunkGroup 을 관리하는데, 사용형태가 상속으로 굳혀진다면, 굳이 사용할 필요가 없어서 template 로 구현했다. 이것의 장점은 ChunkGroup을 찾는 로직이 없는 것이고, 단점은 상속밖에 답이 없다.

SmallObjAllocator 는 객체의 최하단에서만 써야 한다.

  • operator new 를 재정의 해서 그런다.

여담

  • 다음 6부터는 더 다양한 메모리 풀에 대해서 이야기 한다.
  • 통합 관리 SmallObjAllocator를 std::vector + sort + std::lower_bound 로 구현하고, 사용하려고 하니, 굳이 필요 없겠다 싶어서, template 으로 박아 두었는데, 잘작동한다. :)


  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 라이프코리아트위터 공유하기
  • shared
  • 카카오스토리 공유하기