maxalign专题

PG 中的 MAXALIGN 及对齐分配内存(MemoryContextAllocAligned)

在PG源码中,MAXALIGN这个宏,返回最接近输入数字(大于)且能整除8的数,仅此而已。 常用于内存相关的计算,在PG代码中使用的相当广泛,为啥要用这个MAXALIGN?我估计是基于 “CPU访问对齐的地址性能更高” 的认识,PG中各种对象:tuple、page等大小和起始地址都是8字节对齐的,为了8字节对齐,还常常要padding。 有时内存地址的对齐,需要大于MAXALIGN,这时可以用