内存对齐

1. 内存对齐原则

  结构体的有效对齐值的确定:

  • 当未明确指定时,以结构体中最长成员的长度为其有效值;
  • 当用#pragma pack(n)指定时,以n和结构体中最长成员的长度中较小者为其值。

2. 案例

  1. 未指定对齐值

struct A
{
    char c;
    short s;
    int i;
};

struct B
{
    double d;
    char c1;
    int i;
    short s;
    char c2;
};

结果:sizeof(A) = 8; sizeof(B) = 24;

  2. 指定对齐值

#pragma pack(2)

struct A
{
    char c;
    short s;
    int i;
};

struct B
{
    double d;
    char c1;
    int i;
    short s;
    char c2;
};

结果:sizeof(A) = 8; sizeof(B) = 18;

原文地址:https://www.cnblogs.com/jmliao/p/8543791.html