关于堆的bin结构的理解

概述

用户申请堆空间是通过malloc函数实现的,而malloc在内核中对应的是ptmalloc。ptmalloc像是内核和用户的中间商,中间商向卖家(操作系统内核)要大量的货物(大块内存空间),然后分配给买家(用户程序)。同样的,当用户释放chunk的时候,也不是直接归还给系统,而是被ptmalloc所管理。当用户在一次请求内存空间的时候,ptmalloc会在空闲的chunk中选择合适大小的分配给用户。这种机制的好处在于可以避免频繁的系统效用,降低内存分配的开销,提高效率。

而ptmalloc正是通过bin结构来管理空闲堆块。它会根据空闲chunk的大小及使用状态将chunk分为4类:fast bin,small bin,large bin和unsorted bin。

阅读更多