內存管理中常用的小算法

1.判斷是否爲2的n次方
(X&(X-1)) == 0 只有在爲true是才表明X是2的n次方,其他都不是。
 
2.對齊計算
#define ALIGN_BYTES 8
#define align(X) ((X)+(ALIGN_BYTES-1))&(ALIGN_BYTES-1)
 
3.獲取一個地址如果要對齊所需的偏移量
#define ALIGN_BYTES 8
#align_offset(X) (((X)+(ALIGN_BYTES-1))&(ALIGN_BYTES-1) == 0) ? 0 : (ALIGN_BYTES - (X)&(ALIGN_BYTES-1))&(ALIGN_BYTES-1)
先用ALIGN_BYTES - (X)&(ALIGN_BYTES-1)計算出到對齊地址所需偏移,然後在&(ALIGN_BYTES-1)確保是所需對齊位數
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章