我们知道,Windows的内存分配是按4字节内存对齐的,也就是按一个32bit整数对齐,以便提高操作效率,因为如果某些记录,内存块没有按4字节对齐,那么跨了4字节边界的时候,CPU需要寻址2次才能读取到这个数据的!Packed Record的道理也就使类似这个。
那么我们如何来按四字节对齐呢,假设有一个size,我们要按4字节方式对齐,可以用以下代码:
(size + 3) and not 3 即可。
例如
如果size=3,那么按4字节对齐,其值应该是4;
如果size=4,那么按4字节对齐,其值应该是4;
如果size=5,按4字节对齐,其值应该是8;
等等