2012-11-15 13 views
5

class Aとその派生クラスの両方で動作するメモリプールを持つ共通のアルゴリズムまたは実装がありますか? 特定のクラスAに対してのみO(1)で動作するメモリプールを作成するのはかなり簡単です。たとえば、データの大きな塊(10*sizeof(A))を割り当ててから、割り振りが必要になるたびにサイズsizeof(A)の1ブロックを出します。クラスとその派生クラスのC++メモリプール

より大きいサイズのAの派生クラスを考慮することができる場合、そのような簡単な実装がありますか? ありがとう

+2

なぜ具体的なメモリプールが必要ですか?ポインタを保存してヒープをあなたのために働かせることはできませんか? – Jack

+0

オペレータnewとoperator deleteでの練習の理論的な質問です... – lezebulon

+0

私が考えることができる唯一のアプローチは、大きなサイズの管理問題(ホールやメモリチャンク内のもの)を作成することではなく、ステップサイズ階層ツリーの最大クラスのサイズクラスが根本的に違っていなければ、多くのスペースを無駄にすることはありません。 – Jack

答えて

1

本当に単純な定義に依存します。 Jackが述べたように、派生クラスの中で最大のサイズを、メモリプールである配列の要素サイズとして使用できます。それは間違いなく簡単な実装です。

最大型の半分以下のタイプがある場合は、2番目のインスタンスが互換性のあるインスタンスで占有されているスロットを占めるように実装を変更できます。これは、該当する場合は、四分の一サイズのタイプにも拡張することができます。