我们知道malloc的调用形式如:type* p = (type *)malloc(n*sizeof(type))
free的调用形式如:free(p)
好了,问题来了,free函数,我们只给传入一个指针,没有传入内存块的大小n,那么编译器怎么知道要释放多少字节的内存,如果让你来实
现怎么实现?
当时,蒙了,郁闷(丢人)。。。
之前自己都看过类似的代码的。。。
无非就是当申请内存的时候,p指向的内存的起始字节有几个存放着这块内存的一些信息,包括大小,类型等。
=====================================================
free的源代码:
struct mem_control_block
{ int is_available; //这是一个标记 int size; //这是实际空间的大小
} void free(void *ptr) { struct mem_control_block *free; free = ptr - sizeof(struct mem_control_block); free->is_available = 1; return; }