未能释放已分配的块是一种编程错误。如下代码
void garbage() { int *p = (int *)malloc(15213); return ; }
程序员忘记释放p,导致p占用本来可以满足后面分配请求的堆空间。 垃圾收集器(garbage collector)是一种动态存储分配器,自动释放不再需要的称为垃圾的块,自动回收堆存储过程叫做垃圾收集,垃圾收集器定期识别垃圾块,并相应的调动free,将这些块放回到空闲链表中。 我们主要讨论标记清除法