1.使用mem pool
一次性malloc一块大的内存,以后内存分配都从这块大内存中去分配,如何去管理这块内存就是mem pool该做的事情,其实它的原理类似于malloc的原理,只是这块大内存是固定的,不像malloc可以系统中去申请,所以管理上要比malloc简单,mem pool的实现有很多种,这里随便列举一两个:
但是这样在mem pool中又会产生碎片,但是该碎片不会影响到其他的模块或malloc,起到了碎片隔离的目的
2.使用obj pool
类似于slab分配器,由于是固定大小的obj分配器,所以在pool内不存在碎片
a)将slab.c移植到应用中
b)blockheap
c ) 其他的例子,如inode pool
由于需要预先分配一个pool,所以这种做法的缺点是浪费内存