制定地址对齐方式

时间:2009-08-15 16:07:19

标签: c++ alignment

如何通过查看地址来确定地址的对齐方式?

在32位系统上,地址为0x12345670表示它是16字节对齐(因为结尾为0)对吗?

那么:

0x12345671 0x12345672 0x12345673

等?

干杯, 乔恩

2 个答案:

答案 0 :(得分:6)

如果A mod n为0,则地址A为n对齐。因此,0x12345671和0x12345673为1对齐,0x12345672为2对齐。 0x12345670同时是1对齐,2对齐,4对齐,8对齐和16对齐。你只提到两个最高权力(因为隐含了较低的权力)。

答案 1 :(得分:4)

您查看结尾的十六进制数字:

  • 1,3,5,7,9,B,D,F:1-对齐
  • 2,6,A,E:2对齐
  • 4,B:4-aligned
  • 8:8-aligned
  • 10,30,50,70,90,B0,D0,F0:16-对齐
  • 20,60,A0,E0; 32对齐
  • 40,B0:64-aligned
  • 80:128-aligned
  • 00:256-aligned或更多...