이 포스트를 만든 목적
- 정리 좀 해보려고
이 포스트의 준비물
- Firefox 4.0 beta6
- Winamp 5.xx - 노래 들으면서 썻기 때문에 :)
참고 서적
- Modern C++ Design
- Effective C++ 3판
- C++ Standard Library 튜토리얼 레퍼런스
- 프로그래머의 길, 멘토에게 묻다
참조 링크
- http://dodoubt.tistory.com/125 - std::lower_bound 를 보기 위해서
- http://www.cplusplus.com/reference/stl/multimap/lower_bound/ - 위와 마찬가지
내용
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 으로 박아 두었는데, 잘작동한다. :)
'책 정리 > Modern C++ Design' 카테고리의 다른 글
5장, 일반화 함수자(함수 객체) - 4, 일반화 함수자 구현하기 (0) | 2010.10.13 |
---|---|
5장, 일반화 함수자(함수 객체) - 3, C++의 호출 가능한 객체들 (0) | 2010.10.09 |
5장, 일반화 함수자(함수 객체)와 Command 패턴 : 2 - Command 패턴은 무엇인가? (0) | 2010.09.29 |
5장, 일반화 함수자(함수 객체)와 Command 패턴 : 1 - 일반화 함수자는 무엇인가? (0) | 2010.09.29 |
4장, 작은 객체에 대한 메모리 할당 : 6 - 더 이야기 하고 싶은 메모리 풀 (1) | 2010.09.26 |
4장, 작은 객체에 대한 메모리 할당 : 4 - 메모리 풀에서 할당 기능을 어떻게 만들 것인가? (1) | 2010.09.25 |
4장, 작은 객체에 대한 메모리 할당 - 3 : 메모리 풀에서 할당 기능을 어떻게 만들 것인가? (0) | 2010.09.25 |
4장, 작은 객체에 대한 메모리 할당 - 2 : 어떻게 메모리풀을 만들어야 하는가? (722) | 2010.03.28 |
4장, 작은 객체에 대한 메모리 할당 - 1 : 메모리 풀은 무엇이며, 왜 필요한가? (360) | 2010.03.19 |
Part 3, 테크닉 3-13 Typelist를 통한 클래스 생성, 2부 (360) | 2010.03.18 |
최근댓글