2012-11-15 46 views
5

是否有一個通用算法或實現具有可在class A及其派生類上工作的內存池? 創建一個僅適用於特定類A的O(1)中工作的內存池相當容易。例如:分配一大塊數據,即10*sizeof(A),然後在每次需要分配時給出1個大小爲sizeof(A)的塊。一個類及其派生類的C++內存池

有沒有這樣一個簡單的實現,當我們也可以考慮A的派生類,有更大的尺寸? 謝謝

+2

爲什麼你需要一個具體的內存池?你不能只存儲指針並讓堆爲你工作嗎? – Jack

+0

這只是一個理論問題,練習操作符new和操作符delete ... – lezebulon

+0

我能想到的唯一方法是不會產生大的管理問題(對於內存塊中的孔和任何內容)將用作步長層次結構樹中最大類的大小。如果課程沒有根本的不同,你不會浪費太多空間。 – Jack

回答

1

這真的取決於你對簡單的定義是什麼。正如Jack所說,您可以使用派生類中最大的大小作爲內存池數組的元素大小。這絕對是一個簡單的實現。

如果某些類型是最大類型的一半或更小,則可以修改實現以允許第二個實例佔用佔用兼容實例的插槽。如果適用的話,這可以擴展到四分之一大小的類型。