简单的结构对齐/填充问题

时间:2011-08-04 00:09:40

标签: c++ memory

我这里有一个32位的C ++程序,并且出于好奇而检查了反汇编。我有以下结构:

struct Blah
{
    char foo;
    std::string bar;
};

访问blah-> bar时,我注意到以下内容:

; ... address of blah is in eax
003A227B  add         eax,4  

所以我的问题是,为什么4需要添加到blah的地址才能转到bar?我会理解3,因为char是1个字节,这将是一个很好的第4轮...

1 个答案:

答案 0 :(得分:2)

它将blah的基地址加4。我想这与在 foo之后地址中添加3相同。 :)

这确实是一个对齐问题。指针应在地址上对齐,该地址是4的倍数。