c语言之对齐函数代码示例
#define ALIGNMENT 8
// 内存对齐:将size向上对齐到最近的ALIGNMENT倍数
static size_t align_size(size_t size) {
if(size==0)
return ALIGNMENT;
// 对齐公式:(size + 对齐数 - 1) & ~(对齐数 - 1)
return (size + ALIGNMENT - 1) & ~(ALIGNMENT - 1);
}
// 计算内存块对应的桶索引(从0开始)
static size_t get_bucket_index(size_t align_size)
{
// 比如8字节对应索引0,16字节对应索引1..
return (align_size / ALIGNMENT) - 1;
}