参考博文:参考1 、参考2、参考3
在内存管理中经常使用字节对齐来管理分配的内存。
1、原理
2、算法
2.1
2.2 更好的算法
unsigned int calc_align(unsigned int n,unsigned align){ return ((n + align - 1) & (~(align - 1)));}3、算法说明
(1) (align - 1):表示对齐所需的对齐位,如:
2字节对齐位为1;4字节对齐位为11;8字节对齐位111;16字节对齐位为1111;…(2) (n + align - 1):表示n补齐对齐所需数据。
(3) &(~(align - 1)):表示去除由于补齐造成的多余数据。
(4) (n + align - 1) & (~(align - 1)):表示对齐后的数据。