malloc

#include 
#include 
#include 

int main()
{
  char* m0 = sbrk(0);
  printf("sbrk origin:%p\n",m0);

  for (int i=0;i<10;i++) {
    char* p1 = malloc(16);
    char* m1 = sbrk(0);
    printf("sbrk:offset:%d %p %p\n",m1-m0,m1,p1);
    printf("header:%p %d\n",(void*)(*((int*)(p1-8))),*((int*)(p1-4)));
  }
}
image.png

jemalloc的分配malloc(8)
可以看出应该是使用的bitmap 标记是否在用,没有header
而且是直接使用mmap


image.png

你可能感兴趣的:(malloc)