阅读《C 风格的内存分配程序》有感
其实说的就是C语言的malloc和free的实现机制,实现算法。在阅读了内存管理内幕(以下文字基于这个链接)这篇文章的前半部分后,深有感觉,这全是重要的思想啊。
关键词:内存控制块MCB
MCB这东西是一个结构体,具体定义如下
current_location_mcb = (struct mem_control_block *)current_location;得到。
下面的就是判断可不可用啦,长度够不够我要的啦,其中只要有一个不满足,就要找下一个MCB。
一环套一环的能找下去的根本条件就是本次得到的MCB里面的size字段,不断照着它偏移就可以了。
如果可用且长度够,那么就把current_location + MCB长度偏移后的地址返回给用户使用。
如果执行一次就跳出了呢,那么就照着第一次malloc的方式再分配内存。
如此如此.
总结一下:这个分配算法有点像我目前做的网络通讯协议,数据包括报头和数据段。报头定义了一系列有关数据的属性。看来都有通性。
managed_memory_start一直指向第一个地址(暂且这么说),它是一环套一环查找的基础
last_valid_address只要使用了malloc,就得到更新。
现在想想,怎么这么像队列呢,一个head指针永远指向头,一个tail指针永远指向尾。
谢谢观赏。