FC2ブログ

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

FixedAllocator メモ

・std::vector<> を使っている実装がある
良いことが何も無い。
 確保に失敗したら例外がでる&リカバリー不可。
 std::vectorのバッファは寿命がかなり長くなったりするので(コンソールだと)メモリ断片化の原因になる。
 OSのメモリ確保関数の呼び出し回数が増える

・ブロックにチャンクの情報をつける
ブロックの手前か後ろにチャンクのポインタをつけてやるとFreeでのチャンク検索が不要になる。
その代わりメモリ使用量がかなり増える。例えば 8byte のブロックにポインタを1個つけると50%の増加になる。
ほかにもブロックのサイズとアライメントを 16byte にしたい場合、余計なポインタを1個つけるとアライメントを保つためにパティングを入れる羽目になりメモリ消費量が倍になる。

・チャンクの初期化
最初にフリーリストでブロックを繋いでしまうという方法以外にも、確保時にチャンクからブロックを1個ずつ切り崩していくという方法がある。初期化のコストが減る代わりに、何処まで切り崩したかを保持しておかなければならない、切崩しが可能かどうかを判定しなければならないなど、少しだけ煩雑になる。doom3のidHeapの小さいブロックの確保がこの方法だった。
スポンサーサイト

コメントの投稿

非公開コメント

検索フォーム
ユーザータグ

ICPC 2009 国内予選 ゲームプログラミング 

カテゴリ
最新記事
月別アーカイブ
最新コメント
最新トラックバック
リンク
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。