#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
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
网友评论