【发布时间】:2011-10-19 13:42:40
【问题描述】:
我这里有一个 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 轮...
【问题讨论】:
-
并将其添加到结构的开头,而不是 foo 的末尾,这就是为什么它是 4 而不是 3。
-
啊,呃。将其发布为答案,我会接受。