我正在阅读有关 malloc 实现的演示文稿,在幻灯片 7 上,它建议将区域大小和可用性存储在一个单词中以节省空间。另一种方法是使用两个字,这很浪费,因为可用性位只需为 0 或 1。
这是给定的解释:
- 如果块对齐,低位地址位始终为 0
- 为什么要存储始终为 0 的位?
- 将其用作已分配/空闲标志!读取大小字时,必须屏蔽掉该位
http://courses.engr.illinois.edu/cs241/sp2012/lectures/09-malloc.pdf
但我并不真正理解它是如何工作的以及如何在 C 中实现它。为什么大小整数的一位总是 0?