// 此语句用于把地址对齐到cell的整数倍,仅在cell为偶数时正确。
(((long)space) + (sizeof(cell) - 1)) & ~(sizeof(cell) - 1)
原理描述:假如一个数为18,cell为四字节,则cell整倍数的下一地址与现有地址相差不超过sizeof(cell)-1,这里的下一地址为20。
把一个数加上sizeof(cell)-1,(18 +3 = 21)与cell整倍数的地址相差也肯定不超过sizeof(cell)-1 (21-20=1),
这时通过 & ~(sizeof(cell) - 1),即把低几位置为零,也就是去掉超出cell整倍数的地址的部分,对齐就完成了。
字节对齐的另一种宏:
#define ALIGN(pos,size)
((((pos) + (size) - 1) / (size)) * (size))