ゲームにおけるデータ構造・クラス設計・パターンat GAMEDEVゲームにおけるデータ構造・クラス設計・パターン - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト205:名前は開発中のものです。 07/01/31 01:09:38 8/b3tbHY 今適当に書いたけどフラグなんか使うよりこっちのほうがいいんじゃないか template<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); } }; 206:名前は開発中のものです。 07/01/31 01:10:11 94hlWcQw >>202 フラグ管理より双方向リストでつないどくのが良いと思うけどな。 struct PoolNode { struct PoolNode* pn_next; struct PoolNode* pn_prev; char pn_padding[8]; //必要なら char pn_buf[PN_BUFSIZE]; }; static PoolNode nodes[NODENUM]; // 未使用ノードは、こっちにつなぐ static PoolNode* free_first = &nodes[0]; // 使用中ノードは、こっちにつなぐ static PoolNode* inuse_first = 0; 現実には、俺なら自前で書かずに STLport の node allocator にお任せして、 STLコンテナ使っちゃうか、boost::pool だけと。 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch