ゲームにおけるデータ構造・クラス設計・パターン
■ このスレッドは過去ログ倉庫に格納されています
0205名前は開発中のものです。
2007/01/31(水) 01:09:38ID:8/b3tbHYtemplate<typename T,int N>
class FixedAllocator
{
union Block
{
T Data;
Block* pNext;
};
Block* m_pGarbage;
Block m_Pool[N];
public:
FixedAllocator()
{
m_pGarbage = &m_Pool[0];
for( int i = 0; i < N-1; i++ )
m_Pool[i]->pNext = &m_Pool[i+1];
m_Pool[N-1]->pNext = NULL;
}
T* Alloc()
{
Block* pRet = m_pGarbage;
m_pGarbage = m_pGarbage->pNext;
return &m_pGarbage->Data;
}
void Free( void* p )
{
static_cast<Block*>(p)->pNext = m_pGarbage;
m_pGarbage = static_cast<Block*>(p);
}
};
■ このスレッドは過去ログ倉庫に格納されています