内存对齐

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;

 

posted @ 2018-03-11 12:17  IUNI_JM  阅读(126)  评论(0编辑  收藏  举报