我正在做我的计算科学项目。我正在使用 C 进行多处理器编程。对我们的一个要求是,我们不能一直分配小块内存。需要时可以大块分配内存。
所以想象一下我在我的程序中使用结构。而且我的程序的工作方式需要动态内存分配。但它在我们使用的硬件中非常昂贵。所以最好的解决方案是在开始时分配一个大的内存池,并在需要时从这个池中分配内存。
我设想它的工作方式是,我将分配这些结构的位数组并编写我自己的内存管理模块,该模块从这个池中分配和释放内存。但我想知道编写这些模块的最理想方式。是否有任何库可以帮助我管理内存,或者有什么方法可以编写这些库?
编辑:这是我使用的平台:运行 Ubuntu 的 AMD opteron 系统。opterons 具有 NUMA 架构,我想在分配内存时利用它。因此,我没有使用 malloc,而是使用numa_alloc_onnode 在一个特定节点上分配内存。我想使用它分配一大块内存,然后使用内存管理器来管理这个内存。