我这里有一个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轮...
答案 0 :(得分:2)
它将blah
的基地址加4。我想这与在 foo
之后地址中添加3相同。 :)
这确实是一个对齐问题。指针应在地址上对齐,该地址是4的倍数。