固定大小缓冲区的malloc实现
我需要一个使用一个大的固定大小缓冲区的通用malloc实现。 与SQLite的“ Zero-malloc内存分配器 ”类似的东西。 你知道任何这样的实现吗? 它应该重量轻,便于携带,可用于嵌入式应用。
提前致谢。
两个建议:
- 如果你需要一些生产质量和经过充分测试,只需借用SQLite的分配器。 SQLite的源代码编写得非常好,文档化,经过严格测试,并且具有非常宽松的开源许可证。
- 如果您需要一些小而简单的东西,无论是学习还是在嵌入式环境中使用,请考虑这个实现 [无耻的插件!] – 只有350 LOC的注释C代码。
SQLite源代码是免费提供的。 如果您喜欢特定的实现,为什么不使用它呢?
大多数当前的malloc
实现通过划分从OS获得的大量内存来工作。 如果该块用完, malloc
向OS请求一个新的大块。
您可以将自己的实现基于现有的malloc
实现(例如glibc实现),而不是从OS获取块,而是使用单个静态缓冲区。 当用完时, malloc
将开始失败,就像操作系统无法提供任何新块一样。