chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

關(guān)于C語言對齊的一些總結(jié)

jf_59794894 ? 來源:jf_59794894 ? 作者:jf_59794894 ? 2026-05-08 11:23 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

1. 對齊的目的是什么?

  • 提供訪問效率---放大對齊
  • 壓縮存儲空間---緊湊對齊

2. 對齊的類型有哪些?

  • 自然對齊 :結(jié)構(gòu)體默認按最大基礎(chǔ)類型成員的大小對齊(比如最大成員是int(4字節(jié)),就按 4 字節(jié)對齊);
  • 強制對齊 :用__attribute__((aligned(n)))(GCC/Clang)或#pragma pack(n)(MSVC/GCC)指定對齊值n(必須是 2 的冪:1/2/4/8/16...)。

3. 對齊的規(guī)則是什么?

  • 使用packed#pragma pack(n) 時,影響結(jié)構(gòu)體對齊、大小和成員對齊。結(jié)構(gòu)體每個成員必須按自身大小強制對齊值中的較小值對齊;
  • 使用aligned(n) 時,只影響結(jié)構(gòu)體對齊和大小,不影響成員對齊;
  • 使用aligned(n) 時,結(jié)構(gòu)體總大小必須是 max(最大成員對齊,aligned(n)) 的整數(shù)倍(不足則填充字節(jié));
  • 使用aligned(n) 時,結(jié)構(gòu)體對齊取 max(最大成員對齊,aligned(n))
struct Test1 {
    char a; // 按min(1, 1)=1對齊,起始地址0
    short b; // 按min(2,1)=1對齊,起始地址1 
    int c; // 按min(4,1)=1對齊,起始地址3
} __attribute__((packed));

// Test1的起始地址對齊1字節(jié), 比如0,1,2...
// Test1的總大小是1的整數(shù)倍,等于7

struct Test2 {
    char a; // 按min(1, 8)=1對齊,起始地址0
    short b; // 按min(2,8)=2對齊,起始地址2
    int c; // 按min(4,8)=4對齊,起始地址4
} __attribute__((aligned(8)));

// Test2的起始地址對齊max(4,8)=8字節(jié),比如0,8,16...
// Test2的總大小是8的整數(shù)倍,等于8

4. 對齊的方法有哪些?

指令作用適用場景
__attribute__((aligned(n)))放大對齊 (不能小于自然對齊)緩存對齊、硬件要求
__attribute__((packed))縮小對齊 (1 字節(jié)緊湊)網(wǎng)絡(luò)協(xié)議、節(jié)省內(nèi)存
#pragma pack(n)全局修改對齊規(guī)則跨編譯器兼容(MSVC/GCC)

5. 使用typedef定義的結(jié)構(gòu)體類型如何對齊?

typedef struct {
char a;
int  b;
} __attribute__((packed)) TestType;  // ? 正確:放在結(jié)構(gòu)體末尾

6. typedef結(jié)構(gòu)體類型定義的變量也會保持對齊嗎?

  • 是的
// 1. typedef + packed:定義“緊湊對齊的結(jié)構(gòu)體類型”
  typedef struct {
  char a;    // 1
  int  b;    // 4
  } __attribute__((packed)) MyType;

// 2. 用這個別名定義變量
MyType data;

// 結(jié)果:
// sizeof(MyType) = 5 字節(jié)(1+4,無填充)
// data 這個變量,內(nèi)存布局也是緊湊無填充的

7. __attribute__((aligned(n)))對數(shù)組的影響

  • 影響數(shù)組的起始地址對齊總大小 ,不影響數(shù)組元素對齊。

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • C語言
    +關(guān)注

    關(guān)注

    183

    文章

    7648

    瀏覽量

    146226
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    如何使用 powerquad 加速器中的一些功能以及 CMSIS 原始實現(xiàn)中的一些功能?

    )。 如何使用 powerquad 加速器中的一些功能以及 CMSIS 原始實現(xiàn)中的一些功能。 Example: I do not want to call arm_mat_trans_q15 powerquad
    發(fā)表于 04-03 06:37

    爬壁機器人磁鐵的一些常見問題

    爬壁機器人近幾年比較火,它是類能夠在垂直墻面、天花板、傾斜表面上移動和作業(yè)的特種機器人,今天我們不聊其它,只聊下關(guān)于磁吸附應(yīng)用中的磁鐵,以下是小編整理的關(guān)于爬壁機器人中磁鐵的一些常見
    的頭像 發(fā)表于 01-09 10:06 ?472次閱讀
    爬壁機器人磁鐵的<b class='flag-5'>一些</b>常見問題

    汽車網(wǎng)絡(luò)安全開發(fā)語言選型指南:C/C++/Rust/Java等主流語言對比+Perforce QAC/Klocwork工具支持

    汽車網(wǎng)絡(luò)安全如何選編程語言C、C++、Rust、Java……誰更適合AUTOSAR、ISO/SAE 21434?文了解8種主流語言的優(yōu)劣
    的頭像 發(fā)表于 12-26 11:13 ?680次閱讀
    汽車網(wǎng)絡(luò)安全開發(fā)<b class='flag-5'>語言</b>選型指南:<b class='flag-5'>C</b>/<b class='flag-5'>C</b>++/Rust/Java等主流<b class='flag-5'>語言對</b>比+Perforce QAC/Klocwork工具支持

    C語言中一些令人震驚的結(jié)構(gòu)介紹

    C語言同意一些令人震驚的結(jié)構(gòu),下面的結(jié)構(gòu)是合法的嗎,如果是它做些什么? int a = 5, b = 7, c; c = a+++b;
    發(fā)表于 12-23 08:15

    關(guān)于六類網(wǎng)線一些問題的解答

    今天我們就圍繞網(wǎng)友一些常見的關(guān)于六類網(wǎng)線的問題進行下匯總式解答: 問 六類網(wǎng)線可以當電源用嗎? 答 六類網(wǎng)線并不是設(shè)計用于傳輸電力的電纜,因此般不建議將其用于電源傳輸。 盡管六類網(wǎng)
    的頭像 發(fā)表于 12-09 11:13 ?794次閱讀

    為什么單片機還在用C語言編程?

    ,只是C語言是最適合單片機編程的高級語言。 、單片機編程的特點 1.對單片機編程來說,我們首先要考慮的是單片機的程序空間和數(shù)據(jù)空間都是有限的,所以我們在編寫程序時要盡量做到讓程
    發(fā)表于 11-28 07:37

    C語言的編程技巧

    個成員是個未知大小的數(shù)組,適用于動態(tài)分配內(nèi)存并關(guān)聯(lián)個可變長度的數(shù)組。? ?3、匿名結(jié)構(gòu)體和聯(lián)合體?:C語言允許在結(jié)構(gòu)體或聯(lián)合體中定義不
    發(fā)表于 11-27 06:46

    寫好C程序的大要點

    中解決類似問題時所使用的寫法,《C程序設(shè)計語言書中有許多極好的程序?qū)嵗?。在這里有關(guān)于程序模式的相關(guān)網(wǎng)頁,里面也列出了
    發(fā)表于 11-24 08:23

    C語言特性

    1、高效性:直接操作硬件 C 語言代碼的執(zhí)行效率極高,這是其最為顯著的優(yōu)勢之。它能夠直接訪問硬件資源,與底層硬件進行緊密交互,充分發(fā)揮硬件的性能潛力。在嵌入式開發(fā)中,硬件資源往往十分有限,對程序
    發(fā)表于 11-24 07:01

    貼片電容精度J±5%的一些詳細知識

    貼片電容精度J±5%表示電容的實際值與標稱值之間的偏差范圍在±5%以內(nèi) ,以下是關(guān)于貼片電容精度J±5%的一些詳細知識: 、精度等級含義 J±5% :字母“J”在貼片電容的標識中通常表示標稱精度
    的頭像 發(fā)表于 11-20 14:38 ?1037次閱讀
    貼片電容精度J±5%的<b class='flag-5'>一些</b>詳細知識

    摩爾線程新代大語言模型對齊框架URPO入選AAAI 2026

    近日,摩爾線程在人工智能前沿領(lǐng)域取得重要突破,其提出的新代大語言模型對齊框架——URPO統(tǒng)獎勵與策略優(yōu)化,相關(guān)研究論文已被人工智能領(lǐng)域的國際頂級學(xué)術(shù)會議AAAI 2026收錄。這
    的頭像 發(fā)表于 11-17 16:03 ?623次閱讀
    摩爾線程新<b class='flag-5'>一</b>代大<b class='flag-5'>語言</b>模型<b class='flag-5'>對齊</b>框架URPO入選AAAI 2026

    C語言和單片機C語言有什么差異

    單片機c語言相對于普通C語言增加了一些基本的指令,還有變量的賦值是16進制,當然單片機c
    發(fā)表于 11-14 07:55

    蜂鳥E203的浮點指令集F的一些實現(xiàn)細節(jié)

    周期。 總結(jié) 本文介紹的內(nèi)容是為了完成基礎(chǔ)功能:對蜂鳥E203 RISC-V內(nèi)核的微架構(gòu)實現(xiàn)進行定優(yōu)化,在添加F拓展的過程中的一些記錄。
    發(fā)表于 10-24 08:57

    CICC2033:關(guān)于C語言仿真的一些說明

    C語言運行說明 操作說明(以helloworld為例) 1、在SDK環(huán)境下寫好C語言相關(guān)代碼。 最簡單的寫法為根據(jù)已有demo進行更改。如果說需要重新創(chuàng)建新的SDK項目,具體寫法
    發(fā)表于 10-21 14:18

    關(guān)于芯片設(shè)計的一些基本知識

    芯片的設(shè)計理念眾所周知,芯片擁有極為復(fù)雜的結(jié)構(gòu)。以英偉達的B200芯片為例,在巴掌大的面積上,塞入了2080億個晶體管。里面的布局,堪稱個異次元空間級的迷宮。英偉達B200芯片如此復(fù)雜的架構(gòu)
    的頭像 發(fā)表于 06-11 12:16 ?1556次閱讀
    <b class='flag-5'>關(guān)于</b>芯片設(shè)計的<b class='flag-5'>一些</b>基本知識