C 構造体などの固定長データ型があるとします。
struct T
{
...;
}
T を割り当てる 1 つの方法は次のとおりです。
T* create_t() { return (T*) malloc(sizeof(T)); }
および割り当て解除:
void destroy_t(T* t) { free(t); }
内部的には、malloc はさまざまなサイズのブロックをさまざまな方法で処理するメモリ割り当てアルゴリズムを使用します。
create_t と destroy_t を頻繁に呼び出し、非常に多くの T アイテムを一度に (疑似ランダムな順序で) 割り当てるプログラムを書いているとします。
必要なメモリが固定サイズの要素であることを考えると、malloc の一般的な実装よりも優れたカスタム メモリ割り当てスキームを作成することは可能ですか。
たとえば、サイズ T の要素を持つ巨大な配列を事前に割り当ててから使用することもできますが、どの要素が割り当てられ、どの要素が割り当てられていないかを追跡する最良の方法は何ですか?
同じサイズの膨大な数の割り当てで呼び出されたときに、Linux の malloc が最終的に使用するアルゴリズムは何ですか?
このカスタム メソッドのパフォーマンスは、一般的な malloc と比べてどの程度でしょうか?