malloc函数用于动态内存管理,使用管理内存池的方式来进行内存分配,申请大块内存作为堆区,分为多个内存块进行管理
采用用隐式链表结构管理使用块,使用显示的管理空闲的内存块。
当进行内存分配时,Malloc会通过隐式链表遍历所有的空闲块,选择满足要求的块进行分配;当进行内存合并时,malloc采用边界标记法,根据每个块的前后块是否已经分配来决定是否进行块合并。
Malloc在申请内存时,一般会通过brk或者mmap系统调用进行申请。其中当申请内存小于128K时,会使用系统函数brk在堆区中分配;而当申请内存大于128K时,会使用系统函数mmap在映射区分配。