主要观点:作者因 mimalloc 未提供预分配内存功能,决定自己写一个内存分配器,该实现约 163 行代码且很简单。介绍了内存分配器的作用、内存碎片化问题及 buddy 系统分配技术,包括分配、释放和调整大小的过程,最后表示自己实现的代码可在 tgmatos/imalloc 找到,未来可能会深入研究内存分配器内部。
关键信息:
- mimalloc 相关 issue 及作者想法。
- 内存分配器负责程序执行时的内存分配与释放。
- 内存碎片化有内部和外部两种,分配器有多种减少碎片化的方法。
- buddy 系统通过将连续内存块分成二的幂次方的小块来工作。
- 分配时不断分割内存块直到满足请求大小,释放时标记为未使用并合并伙伴块。
重要细节: - C 标准库提供
malloc/free/resize
等函数,自定义分配器需提供类似接口。 - buddy 系统在 Linux 内核中用于处理页面分配(虽为修改版本)。
- 示例中请求 16KB 内存块,从 256KB 开始不断分割。
- 释放 16KB 内存块时会合并伙伴块。调整大小部分留作练习。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。