【文件属性】:
文件名称:buddy:一个简单的伙伴分配器
文件大小:12KB
文件格式:ZIP
更新时间:2021-06-01 15:39:03
C
伙伴
Apache License 2.0 下的简单伙伴分配器。
malloc/free 函数的代码不超过 60 行。
没有递归函数。
只要您了解伙伴分配器是什么以及它的用途,代码就简单明了。
还没有彻底的测试。 随意测试它,错误报告将不胜感激。
我将在一些微控制器 (MCU) 项目中使用它,并将保留针对该域的代码。 所以线程安全不会永远被解决。
假设是:
单线程。
没有其他可用的内存分配器。 内存池将被静态分配(首选),或者使用alloca()在堆栈上分配alloca()如果可用)。
解释
有很多网页解释了伙伴内存分配器。 我发现这个页面对工作代码特别有帮助。
示例代码有效,但使用了递归函数。 所以我重写它。
另一个修改是free() 。 示例代码要求调用者提供分配块的大小。 它用于计算要释放的 mem 块的块顺序 - 在 buddy 的术语中。 这在现实世界的代码中
【文件预览】:
buddy-master
----main.c(1KB)
----buddy.h(2KB)
----LICENSE(11KB)
----.gitignore(246B)
----README.md(2KB)
----projects()
--------eclipse()
----buddy.c(3KB)