2011-08-18 4 views
0

저는 Core Duo가 설치된 Windows 7을 실행하고 있습니다. 나는 잠시 동안 Codeblocks를 사용 해왔다. 나는 GNU 컴파일러를 사용하고 있다고 생각한다.구성 요소 용 데이터 풀 구성

추상 클래스 Component에서 상속 한 많은 구성 요소 클래스가 있습니다 (또는 가질 수 있습니다). 나는 미정의 분량의 구성 요소 유형에 대해 메모리 풀을 저장하는 시스템을 구축하는 데 도움이 필요합니다. 각각 미정의 분량의 구성 요소가 있습니다. 인수를 위해서 아마도 후자가 고정되어 있기 때문에, 나는 절대적으로 필요한 때 크기를 어떻게 바꿀 수 있는지를 알아낼 수 있습니다.

또한 편리하게 각 구성 요소 유형은 0에서부터 아무런 구멍이없는 ID (unsigned short)를 갖습니다. 예!

그래서 배열 크기와 사물을 추적 할 관리 클라우드가 있다고 가정하면이 작업과 같은 것이 좋을까요?

class Component {}; 

class FooComponent: public Component {}; 
class BarComponent: public Component {}; 
. 
. 
. 

std::vector<Component*> pool_list; 

// returns pointer to beginning of pool 
Component* foo_pool = MethodToCreateComponentPool(/* Params */) 
Component* bar_pool = MethodToCreateComponentPool(/* Params */) 

pool_list.push_back(foo_pool); 
pool_list.push_back(bar_pool); 

아마도 Params에 대해 sizeof(FooComponent)을 입력하십시오. 함수 내에서 (난 정말 어떻게 해야할지에 시작) 다음

내가이 같은 메모리를 할당 경험이없는 malloc(START_COUNT * component_size)

을한다. 나는 쉽게

vector< vector<Component*>* > 또는
map<unsigned short, vector<Component*> >

뭔가를 설정할 수 있지만, 그것은 나에게 연속 풀을 제공하지 않습니다 (하나 추한입니다). 캐시가 필요합니다. :)

아이디어가 있으십니까? 패턴? 관용구? 도움?

+0

어떤 하드웨어 및 플랫폼을 타겟팅합니까? –

답변

0

어떻게 구현했는지, 실제로 필요한 트랙을 잃어 버렸습니다. 기본적으로 this post입니다.

감사합니다.