chunks

已分配的chunck

  • 在x86_64上chunk多加16字节的metadata,x86上多加8字节的meatadata
  • metadata := prev size + size + flags(A,M,P)
    prev size: 前面相邻chunk被free,则代表前chunk大小
    size:代表chunk大小
    P(0x01): Previous in Use ,表示前面的chunk是否已分配在使用,P == 0,该chunk之前的chunk被free
    M(0x02): Is MMAPPED,表示该chunk是否来自mmap
    A(0x04): Non Main Arena, 表示该chunk是否来自外部的main area
  • user data:存放了用户数据

free chunks

bins

fastbins

tcache

参考