Visual Studio

时间:2016-05-27 00:33:16

标签: visual-studio-2013 alignment structure

我使用的是Visual Studio 2013,并且struct alignment成员值设置为默认值(/ Zp8)。项目正在64位模式下构建。

struct x{
    char e;
    double f;
    double g;
};

sizeof(x)已返回24,这是正确的,因为它是8的倍数。但对于具有相同结构对齐值的以下结构

struct x{
    char e;
    long f;
    long g;
};

sizeof(x)返回12,这不是8的倍数。我对此感到困惑。

有人能帮我理解吗?

1 个答案:

答案 0 :(得分:0)

Visual C ++中的/Zp开关不会强制每个成员的对齐为8个字节。

每个成员的对齐是其自然对齐的最小以及/Zp提供的打包设置。

MSDN

详细介绍了这一点