n*****g 发帖数: 178 | 1 原型是:#define alignment(a, size) ((a+size-1) & (~ (size-1)))
目的是为了alignment,但是我不太理解这个写法,请各位指教!! | w****y 发帖数: 9 | 2 得到是size的倍数同时大于等于a的最小值吧。
size:要对齐的大小
比如size=4, a = 3, 得到的值为4, 是能容纳下3同时又对齐size的最小值
+(size-1)使得最后值比a大
& (~ (size-1))使得值与size对齐(当size为2的幂时)
【在 n*****g 的大作中提到】 : 原型是:#define alignment(a, size) ((a+size-1) & (~ (size-1))) : 目的是为了alignment,但是我不太理解这个写法,请各位指教!!
| r*******e 发帖数: 7583 | 3 恩,更详细的解释
http://stackoverflow.com/questions/227897/solve-the-memory-alig
【在 w****y 的大作中提到】 : 得到是size的倍数同时大于等于a的最小值吧。 : size:要对齐的大小 : 比如size=4, a = 3, 得到的值为4, 是能容纳下3同时又对齐size的最小值 : +(size-1)使得最后值比a大 : & (~ (size-1))使得值与size对齐(当size为2的幂时)
| W********e 发帖数: 45 | 4
谢谢各位!
【在 w****y 的大作中提到】 : 得到是size的倍数同时大于等于a的最小值吧。 : size:要对齐的大小 : 比如size=4, a = 3, 得到的值为4, 是能容纳下3同时又对齐size的最小值 : +(size-1)使得最后值比a大 : & (~ (size-1))使得值与size对齐(当size为2的幂时)
|
|