大家帮我解释一下c的释放内存的原理
有下面的一段代码void my_free(void *ptr)
{
if(ptr>=btm_of_heap)
{
if(ptr<top_of_heap)
(
ptr->link=heap;
heap=ptr;
return;
}
else
if(free(ptr))
{ return;}
}
puts("\nAttemp to free unallocated block!\n\7");
exit(1);
}
该函数通过传入的要释放的内存区域的首地址来判断这快内存是不是从heap分配
出去的.如果是,则btm_of_heap<=ptr<top_of_heap应放把它放到链表表头,其操作是
ptr->link=heap;否则,说明这个内存是由malloc分配的,执行else中的free().
问题:两个红色的部分不懂
放到表头就能释放了吗
所有的堆,不都是malloc分配的吗
难道有两个链表控制内存的分配.回收管理问题吗
不怎么理解
望解释