实现动态内存分配要考虑以下问题:
空闲块组织:如何记录空闲块?
放置:如何选择一个合适的空闲块来放置一个新分配的块?
分割:将一个新分配的块放置到某个空闲块之后,如何处理这个空闲块中的剩余部分?
合并:如何处理一个刚刚被释放的块?
通过在每个块的头部存放信息可以方便的定位到写一个块的位置,以及本块的大小和使用情况。本块的起始地址加上本块的大小就是下一个块的起始地址。
struct mem_control_block{
int is_available;
int size;
}
空闲链表怎么节省存储链接的空间?