C++类及其派生类的内存池

C++ memory pool for a class and its derived classes

本文关键字:内存 C++ 派生      更新时间:2023-10-16

是否有一种通用的算法或实现来拥有一个同时适用于class A及其派生类的内存池?创建一个在 O(1) 中只对特定类 A 工作的内存池是相当容易的。例如:分配一大块数据,即10*sizeof(A),然后在每次需要分配时给出 1à 大小sizeof(A)块。

当我们还可以考虑具有更大大小的 A 的派生类时,有没有这么简单的实现?谢谢

这实际上取决于你对简单的定义是什么。 正如 Jack 所说,您可以使用最大的派生类的大小作为作为内存池的数组的元素大小。 这绝对是一个简单的实现。

如果某些类型的大小是最大类型的一半或更小,则可以修改实现以允许第二个实例占用占用兼容实例的插槽。 如果适用,也可以扩展到四分之一大小的类型。