小内存管理器

时间:2009-04-08 07:37:13

标签: c memory memory-management

我有一大块记忆,让我们说'NN'MB。我想要一个只能从这个内存分配的自定义内存管理器。内存管理器应该能够分配,释放已经可用的块。如果它还可以处理碎片,那将会很棒。

编辑:我在C中寻找一些开源,或者有一些像malloc和free这样的API。

4 个答案:

答案 0 :(得分:4)

能够“处理”碎片是一个相当陡峭的要求。如果您的意思是管理员必须能够对内存进行解密,这意味着它无法使用标准的C malloc() API。您需要一个间接API,其中内存分配不是由实际的直接可解除引用的地址引用,而是更抽象的内容。

这是因为你的内存管理器必须能够在碎片整理期间移动已分配的内存块,如果应用程序将直接绝对指针分配到已分配的内存中,则无法执行此操作。

当然,强制应用程序间接使用内存意味着许多常见的C语言和API都会中断,因为期望在C中自由使用指针。

答案 1 :(得分:3)

我强烈建议您查看Andrei Alexandrescu的Policy-Based Memory Allocation Fine-tuning your memory management

他在这个问题上也有video of a talk,它也被强烈推荐为学习资源。

答案 2 :(得分:1)

它必须是C吗? C ++的Loki分配器可以做到这一点

答案 3 :(得分:1)

请参阅glib malloc()和内存缩减

http://live.gnome.org/MemoryReduction