メモリプール
簡易メモリプール・モジュールは(たとえば)、コンパイル時にモジュールをデプロイするアプリケーションに最適化されたブロック・サイズで3つのプールを割り当てることができる。
アプリケーションは次のインターフェイスを通じてメモリの割り当て、アクセス、解放を行うことができる:
プールからメモリを割り当てる。この関数は必要なブロックが収まるプールを決定する。そのプールのすべてのブロックがすでに予約されている場合、関数は次に大きいプールでブロックを見つけようとする。割り当てられたメモリ・ブロックはハンドル(英語版)で表される。
割り当てられたメモリへのアクセス・ポインタを取得する。
以前に割り当てられていたメモリ・ブロックを解放する。
ハンドルは(たとえば)、unsigned intで実装できる。モジュールはハンドルをプール・インデックス、メモリ・ブロック・インデックス、バージョンに分割することで内部的に解釈できる。プールとメモリ・ブロック・インデックスにより、ハンドルを使用して対応するブロックへの高速アクセスが可能になる一方、新しい割り当てごとにバージョンが増加するため、これによりメモリ・ブロックが既に解放されている(保持期間が長すぎる)ハンドルを検出できる。