C プログラミング環境は、オペレーティング システムに付属する標準 C ライブラリによって提供される malloc 実装を使用します。Doug Lea のメモリ アロケータ( dlmallocと呼ばれる) の概念は、UNIX システム上のほとんどのメモリ アロケータで何らかの形で最も広く使用されています。dlmallocは、さまざまなサイズのビンを使用してオブジェクトを収容します。オブジェクト サイズに最も近いビンを使用して、オブジェクトを割り当てます。
FreeBSD は、現在のマルチコア システムで使用する場合に優れたパフォーマンス特性を提供する、同時実行およびスレッドセーフになるように設計されたjemallocと呼ばれる新しいマルチスレッド メモリ アロケータを使用します。古い malloc と新しいマルチスレッドの malloc の比較については、こちらを参照してください。マルチスレッド化されていますが、異なるサイズのチャンクの概念を使用して、オブジェクトのサイズに応じてオブジェクトを収容します (オブジェクトのサイズに最も近いチャンクがオブジェクトの割り当てに使用されます)。
UNIX カーネル内で最も一般的なメモリ アロケータは、Sun Microsystems によって導入されたスラブ アロケータです。スラブ アロケータは、スラブと呼ばれる大きなメモリ チャンクを使用します。これらのスラブは、さまざまなサイズのオブジェクト (またはプール) のキャッシュに分割されます。各オブジェクトは、そのサイズに最も近いオブジェクトを含むキャッシュから割り当てられます。
お気づきのとおり、上記のビン/チャンク/スラブ キャッシュは最適なアルゴリズムの形式にすぎません。そのため、「最適な」アルゴリズムが最も広く使用されている malloc アルゴリズムの 1 つであると簡単に推測できます (ただし、メモリ アロケータは他の重要な点で異なります)。