程序员的自我修养 8.8分
读书笔记 堆分配算法
超级露

整个堆空间按照是否被占用而被分割成了若干个空闲(Free)块和占用(Used)块,它们之间由双向链表链接起来。

当用户要申请一块内存时,堆分配算法将遍历整个链表,直到找到一块足够大的空闲块,如果这个空闲块大小刚好等于所申请的大小,那么直接将这个空闲块标记为占用块,然后将它的地址返回给用户;如果空闲块大小大于所申请的大小,那么这个空闲块将被分割成两块,其中一块大小为申请的大小,标记为占用,另外一块为空闲块。

当用户释放某一块空间时,堆分配算法会判别被释放块前后两个块是否为空闲块,如果是,则将它们合并成一个大的空闲块。

0
《程序员的自我修养》的全部笔记 280篇
豆瓣
我们的精神角落
免费下载 iOS / Android 版客户端