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

标签 c++ memory memory-management

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

当我们还可以考虑具有更大尺寸的 A 的派生类时,是否有如此简单的实现? 谢谢

最佳答案

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

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

关于类及其派生类的 C++ 内存池,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13405850/

相关文章:

memory-management - 每个进程都有自己的页表吗?

c++ - 改变 wxToolBar 的高度

c++ - CLion 中 CMake 的引用 boost

c++ - 如何:Boost::asio 的客户端连接管理器?

c - C 程序中的变量段?

memory-management - 似乎Random使使用Point Cloud Library处理Pointcloud崩溃-可能是内存问题?

java - 避免 JNI C 与 Java 之间的内存泄漏

C++:查找满足谓词的元组的第一个元素

haskell - Cabal 安装标准内存不足

C,如果分配不能就地增长,则 realloc 失败