フリーリスト

フリーリスト (free listまたはfreelist) は動的メモリ確保のスキームで使用されるデータ構造。

解説 
各未割り当て領域の最初のワードを次の未割り当て領域へのポインタとして使用することによって、連結リストでメモリの未割り当て領域同士の結合を操作する。すべてのオブジェクトが同じサイズであるメモリプールからの割り当てに最適。

フリーリストを使用すると、割り当てと解放の操作が非常に簡単になる。領域を解放するには、その領域をフリーリストにリンクするだけ。領域を割り当てるには、空きリストの末尾から単一の領域を削除して使用するだけ。領域のサイズが可変である場合、十分なサイズの領域を検索する必要があり、コストがかかる可能性がある。

フリーリストには (連結リストから継承された) 欠点があり、参照の局所性が低いためデータキャッシュの使用率が低くく、またとは異なり、大規模な領域の割り当て要求を満たすために隣接する領域を自動的に統合することをしない。にもかかわらず、これらは本格的なメモリ・アロケータが不要であるか、過剰なオーバーヘッドを必要とするさまざまな単純なアプリケーションで依然として役立つ。

OCamlランタイムは、AndroidランタイムのRosAllocと同様に、割り当てリクエストを満たすためにフリーリストを使用する。

脚注

参考文献 

 The Memory Management Glossary
 Memory Allocation Lecture Slides (ppt)

関連項目 
 
 mimalloc

データ構造
メモリ管理
連結リスト