<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      結(jié)構(gòu)體對齊

      結(jié)構(gòu)體對齊的實際應(yīng)用

      例 1:默認對齊 vs #pragma pack(2)

      #include <stdio.h>
      
      // 默認對齊(假設(shè)平臺:char=1, short=2, int=4)
      struct S1 
      {
          char c;    // 地址0(對齊1)
          short s;   // 需對齊2 → 地址1不符合,填充1字節(jié)(地址1),s從地址2開始(占2-3)
          int i;     // 需對齊4 → 地址4開始(占4-7)
      };
      
      // 強制2字節(jié)對齊
      #pragma pack(2)
      struct S2 
      {
          char c;    // 地址0(對齊min(1,2)=1)
          short s;   // 對齊min(2,2)=2 → 地址1不符合,填充1字節(jié)(地址1),s從2開始(2-3)
          int i;     // 對齊min(4,2)=2 → 地址4是2的倍數(shù),直接存放(4-7)
      };
      #pragma pack()
      
      int main() 
      {
          printf("S1大小:%zu\n", sizeof(struct S1));  // 8字節(jié)(1+1+2+4=8,總對齊4)
          printf("S2大小:%zu\n", sizeof(struct S2));  // 8字節(jié)(同上,因總對齊為2,8是2的倍數(shù))
          return 0;
      }
      

      說明:此處S1和S2大小相同,但對齊邏輯不同(S1總對齊 4,S2總對齊 2)。

      例 2:#pragma pack(1) 緊湊布局(無填充)

      強制 1 字節(jié)對齊,徹底消除填充

      #pragma pack(1)
      struct S3 
      {
          char c;    // 地址0(對齊1)
          int i;     // 對齊min(4,1)=1 → 直接從地址1開始(1-4)
          double d;  // 對齊min(8,1)=1 → 從地址5開始(5-12)
      };
      #pragma pack()
      
      // 大小計算:1(c) + 4(i) + 8(d) = 13字節(jié)(無任何填充)
      printf("S3大小:%zu\n", sizeof(struct S3));  // 13字節(jié)
      

      適用場景:需要精確控制內(nèi)存布局(如協(xié)議解析、硬件寄存器映射),但可能降低訪問性能。

      例 3:attribute((packed))(GCC/Clang)

      效果等同于#pragma pack(1)

      struct S4 
      {
          char c;
          int i;
          short s;
      } __attribute__((packed));  // 緊湊對齊
      
      // 大小:1 + 4 + 2 = 7字節(jié)(無填充)
      printf("S4大小:%zu\n", sizeof(struct S4));  // 7字節(jié)
      

      例 4:attribute((aligned(n))) 提高對齊要求

      強制結(jié)構(gòu)體按更大的對齊值布局(常用于需要高效訪問的場景):

      // 要求最小對齊16字節(jié)(即使成員最大對齊值小于16)
      struct S5 
      {
          int a;  // 4字節(jié),默認對齊4
          char b; // 1字節(jié),默認對齊1
      } __attribute__((aligned(16)));
      
      // 成員總大小:4 + 1 = 5字節(jié),需填充11字節(jié)滿足16對齊
      printf("S5大小:%zu\n", sizeof(struct S5));  // 16字節(jié)
      
      posted @ 2025-11-05 00:10  開心豬扒  閱讀(3)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 加勒比无码人妻东京热| 国产午夜福利视频第三区| 啦啦啦视频在线日韩精品| 国产亚洲日韩av在线播放不卡| 色综合久久夜色精品国产| 免费无码一区无码东京热| 2019香蕉在线观看直播视频| 欧美黑人大战白嫩在线| 无码福利写真片视频在线播放| 久久精品国产精品亚洲综合| 黑人大荫道bbwbbb高潮潮喷| 毛片内射久久久一区| av小次郎网站| 国产成人综合色视频精品| 中文字幕第一页国产| 中文字幕日韩区二区三区| 妺妺窝人体色www看美女| 亚洲精品成人老司机影视| 色色97| 日韩精品 在线 国产 丝袜| 西西人体44www大胆无码| 国产肥臀视频一区二区三区| 国产一区二区高清不卡| 116美女极品a级毛片| 天天爽夜夜爱| 大伊香蕉在线精品视频75| 亚洲国产精品一区二区第一页| 国产福利萌白酱在线观看视频| 99久久成人亚洲精品观看| 国产女人喷潮视频免费| 色偷偷www.8888在线观看| 日本一区三区高清视频| 蜜桃草视频免费在线观看| 国产一区二区三区内射高清| 国产极品美女高潮抽搐免费网站| 人妻中文字幕一区二区三| 日韩丝袜欧美人妻制服| 综合图区亚洲欧美另类图片| 天天天做夜夜夜做无码| 国产福利酱国产一区二区| 自拍第一区视频在线观看|