void mem_print(unsigned char *p, int size)
{
for (int i = 0; i < size; i++)
{
fprintf(stderr, "%02x", p[i]);
}
fprintf(stderr, "\n");
}
int main()
{
void *p = Mem_alloc_func(10);
mem_print(p, 10);
void *p2 = Mem_alloc_func(10);
mem_print(p2, 10);
void *p3 = Mem_alloc_func(10);
mem_print(p3, 10);
Mem_dump_func();
fprintf(stderr, "try to clear\n");
Mem_free_func(p2);
Mem_free_func(p);
Mem_free_func(p3);
Mem_dump_func();
fprintf(stderr, "then to malloc\n");
p = Mem_alloc_func(10);
fill_buffer(p, 10);
p = Mem_realloc_func(p, 20);
mem_print(p, 24);
Mem_dump_func();
return 0;
}
我们可以看到泄漏的大小和行号
原版的代码的联合体是用来内存对齐的加快访问速度
|