最简单的方法是使用一个链表来管理所有已分配和未分配的内存块,在每个内存块的首部记录当前块的大小、当前区块是否已经被分配出去。这时需要进行内存整理,将连续的空闲内存合并,但是这会降低函数性能。主要利用了池化思想来管理内存分配。只需要传递一个指针就可以释放内存,空间大小可以从首部读取。
最简单的方法是使用一个链表来管理所有已分配和未分配的内存块,在每个内存块的首部记录当前块的大小、当前区块是否已经被分配出去。这时需要进行内存整理,将连续的空闲内存合并,但是这会降低函数性能。主要利用了池化思想来管理内存分配。只需要传递一个指针就可以释放内存,空间大小可以从首部读取。
对于内存部分需要知道:下面来仔细看这些内存是如何管理的。伙伴系统每次分配内存都是以页(4KB)为单位的,但系统运行的时候使用的绝大部分的数据结构都是很小的,为一个小对象分配4KB显然是不划算了。