从固定大小的缓冲区实现malloc

时间:2011-01-11 12:18:16

标签: c malloc

我需要一个使用一个大的固定大小缓冲区的通用malloc实现。类似于“Zero-malloc memory allocator”SQLite的东西。你知道任何这样的实现吗?它应该重量轻,便于携带,可用于嵌入式应用。

提前致谢。

3 个答案:

答案 0 :(得分:7)

两个建议:

  1. IF 你需要一些生产质量和经过充分测试,只需借用SQLite的分配器。 SQLite的源代码编写得非常好,有文档证明,经过严格测试,并且拥有非常宽松的开源许可证。
  2. IF 你需要一些小而简单的东西,无论是学习还是在嵌入式环境中使用,都要考虑this implementation [无耻的插件!] - 只需350个注释的C代码。< / LI>

答案 1 :(得分:4)

SQLite源代码是免费提供的。如果您喜欢特定的实现,为什么不使用它呢?

答案 2 :(得分:1)

大多数当前malloc实现通过划分从操作系统获得的大量内存来工作。如果该块用完,malloc会要求操作系统提供一个新的大块。

您可以将自己的实现基于现有的malloc实现(例如glibc实现),而不是从操作系统获取块,而是使用单个静态缓冲区。当用完时,malloc将开始失败,就像操作系统无法提供任何新块一样。