理解的关键

如何分配与回收?
如下为关键理解点:

  1. 只有专用块才会被读入内存(可以把它视为第一组);专用块的第一项(如果按指针从上往下,那就是最后一项),所指向的第二组,该组不被读入内存
  2. 所有的空闲块都可以被分配;所以,某些存储了下一组信息的关键块需要先保存处理。

分配与回收的具体过程

以专用块还剩最后一项为例:
此时,需要该项所指向的第二组,但是第二组中也有一项是保存了下一组信息的,需要保存,所以,这一项的信息就被保存到专用块的最后一项中


整个分配过程按照如下顺序:
专用快 → 第二组 → 第三组……


很自然,回收的过程正好是逆序,即:
最后一组 → …… → 第三组 → 第二组 → 专用块


这样就好理解了,比如,回收时,先把第三组恢复了,那么原先保存在专用块中的“第二组指向下一组的信息”就需要写回第二组,然后指向第二组的信息再写回专用块。 这有一种递归调用而后返回的感觉**