1:有如下代码:

#include <iostream.h>
#pragma pack(1)
struct test{
          char c;
          short s1;
          short s2;
          int i;
};

int mian()
{
    cout<<sizeof(test)<<endl;
    return 0;
}

    代码第3行用#pragma pack将对其设为1.由于结构体test中的成员s1、s2和i的自身对齐分别为2、2和4,都小于1.因此它们都是用1作为对齐,sizeof(test)=1+2+2+4=9.

    如果注释掉第3行,则编译器默认对齐为8.所以各个成员自身的对齐都小于8,因此它们使用自身的对齐,sizeof(test)=1+1(补齐)+2+2+2(补齐)+4=12.

相关文章:

  • 2021-08-19
  • 2021-08-24
  • 2022-01-12
  • 2021-07-30
  • 2021-07-11
  • 2022-12-23
  • 2022-12-23
  • 2022-01-04
猜你喜欢
  • 2021-09-23
  • 2021-07-12
  • 2021-07-26
  • 2021-10-21
  • 2022-12-23
  • 2022-01-27
  • 2021-10-31
相关资源
相似解决方案