可能重复:
malloc和免费的代码
如果没有,有人能向我解释malloc((是如何工作的吗(它使用了什么算法/数据结构(。我想将标准库的实现与我自己的malloc((实现进行比较。
Gnu源代码
有许多实现:http://freebsd.active-venture.com/FreeBSD-srctree/newsrc/i386/boot/cdboot/malloc.c.html
http://www.google.co.uk/search?q=malloc+源代码+代码
规范实现是dlmalloc
:
http://g.oswego.edu/dl/html/malloc.html
任何不是纯粹垃圾的实现都使用相同的基本bin算法,但可能有线程本地缓存、竞技场等功能,这可能有助于提高性能,但会让它更难理解,所以我只想阅读dlmalloc
,并将其余部分保存起来,以备你想让自己受苦时使用。作为一个主要优势,dlmalloc
的算法有很好的文档记录;请参阅我提供的链接。
标准库函数是按平台实现的,因此任何给定平台的实现都可以采用几种方法中的任何一种。要搜索的术语包括:固定块分配器、伙伴块分配器、slab分配器等。