static inline size_t align(size_t size) {
return (size + ALIGNMENT - 1) & ~(ALIGNMENT - 1);
}
这个函数的作用是对传入的size
进行对齐,对齐的大小由常量ALIGNMENT
指定。对齐的目的是为了提高内存访问效率。
函数中的实现使用了位运算的技巧,将size
与(ALIGNMENT-1)
取按位取反,然后再与(ALIGNMENT-1)
进行按位与操作。这样做的结果就是将size
向上舍入到ALIGNMENT
的倍数。例如,当ALIGNMENT
为4时,传入的size
为5,那么取按位取反后为11111010,再与3(即4-1)进行按位与操作,结果为4,即向上舍入到4的倍数。
这样对齐的操作在内存分配中非常常见,比如操作系统申请内存时,会申请整页大小的内存(通常为4KB或者8KB),而不是随意的大小。因为对齐可以提高内存访问的效率,减少内存碎片,从而提高整个系统的性能。