在嵌入式系统中,很难找到一个真正“可用”的通用内存分配器。 现有方案通常存在以下问题:
- 太大(TLSF、dlmalloc)
- 太弱(FreeRTOS heap_x 功能有限)
- 太不可控(碎片严重、查找慢)
- 太专用(只能应对单一模式)
mg 的存在,就是为了提供一组小型、可预测、适合 MCU 约束的内存分配器。
mg 提供多种分配器,覆盖嵌入式系统的典型内存使用模式:
- 动态堆分配(通用场景)
- best‑fit 堆(提高大块分配成功率)
- 固定块内存池(O(1) 小对象分配)
- 固定对象池(稳定、无碎片的对象缓存)
- 区域分配器(编译器/短生命周期对象)
一句话:mg 给嵌入式系统补上了它们本该拥有的内存分配工具:轻量、可控、针对真实工作负载设计。
- 占用极小:纯 C、零依赖
- RAM 使用可控:只占用你配置的池/堆
- 无锁:适用于单核 MCU
- 8 字节对齐
- 适合只有几 KB 内存的设备
mg 可以直接嵌入任何 MCU / RTOS / 裸机项目,不带来额外负担。
mg 包含多个可独立使用的分配器:
- heap — 类 SLOB 链表堆,可选泄漏检测
- memalloc — 红黑树 + 链表的 best‑fit 堆
- membit — 基于 32 位 bitmask 的固定块内存池
- mempool — 固定对象池,O(1) 分配
- mg_region — pool/bump 区域分配器(短生命周期内存)
所有模块均为独立组件,可按需选择使用。