free内存大小的问题

    技术2022-07-05  182

    我们知道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; }


    最新回复(0)