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

每個字段都要放到內(nèi)存地址編號(地址值) 自身的整數(shù)倍地址上去滔悉。

(這樣理解也可以厅瞎。 不用太糾結(jié)??厕隧,就可以不用看下面的)企量。

為什么存在內(nèi)存對齊

平臺移植型好

不是所有的硬件平臺都能訪問任意地址上的數(shù)據(jù)涵防;某些硬件平臺只能只在某些地址訪問某些特定類型的數(shù)據(jù)闹伪,否則拋出硬件異常,及遇到未對齊的邊界直接就不進行讀取數(shù)據(jù)了壮池。

cpu處理效率高

image.png

從上圖可以看出偏瓤,對應(yīng)兩種存儲方式,若CPU的讀取粒度為4字節(jié)椰憋,

那么對于一個int 類型厅克,若是按照內(nèi)存對齊來存儲,處理器只需要訪存一次就可以讀取完4個字節(jié)
若沒有按照內(nèi)存對其來讀取橙依,如上圖所示证舟,就需要訪問內(nèi)存兩次才能讀取出一個完整的int 類型變量
具體過程為,第一次拿出 4個字節(jié)票编,丟棄掉第一個字節(jié)褪储,第二次拿出4個字節(jié),丟棄最后的三個字節(jié)慧域,然后拼湊出一個完整的 int 類型的數(shù)據(jù)鲤竹。

image.png

32位 與 64位 程序 對齊 有區(qū)別。 一個默認是4字節(jié) 一個是8字節(jié)。

char 一個字節(jié)的辛藻,隨便放碘橘。 大于1個字節(jié)的時候,需要注意對齊粒度了吱肌。禁止讓一個多字節(jié)數(shù)據(jù)跨粒度了痘拆。
struct 前面的字段要對后面數(shù)據(jù)的地址編號的負責(zé), 如果大于char了氮墨。 short 必須是2的倍數(shù)纺蛆。 int 是4的倍數(shù) double 是8的倍數(shù)。最后一個字段對下個結(jié)構(gòu)體 開頭位置負責(zé)规揪。(結(jié)構(gòu)體 放到數(shù)組中的時候 需要對齊)

image.png

image.png

https://blog.csdn.net/weixin_41453492/article/details/101318522

image.png

https://acl.readthedocs.io/en/latest/zhCN/ch2-cn.html

https://ksco.gitbooks.io/build-your-own-lisp/content/Basics.html

核心 #pragma pack(8) 這里不指定的話,就是默認值. 用該形式(權(quán)),確定怎么計算每個結(jié)構(gòu)體中的變量具體地址. good (不含糊了.明確了.)

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

規(guī)則

  • 64位操作系統(tǒng)上64位編譯器:默認8字節(jié)對齊
  • 64位操作系統(tǒng)上32位編譯器:默認8字節(jié)對齊
  • 32位操作系統(tǒng)上32位編譯器:默認4字節(jié)對齊

以下兩點是對于64位操作系統(tǒng)上64位編譯器:默認8字節(jié)對齊而言的桥氏,如果是4字節(jié)對齊,只需要將8改成4即可:

  • 結(jié)構(gòu)體整體本身安置在8字節(jié)對齊處猛铅,結(jié)構(gòu)體對齊后的大小必須是8的倍數(shù)
  • 結(jié)構(gòu)體中每個元素占的字節(jié)大小是自身對齊參數(shù)的整數(shù)倍
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末字支,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子奸忽,更是在濱河造成了極大的恐慌堕伪,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,214評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件栗菜,死亡現(xiàn)場離奇詭異欠雌,居然都是意外死亡,警方通過查閱死者的電腦和手機苛萎,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評論 2 382
  • 文/潘曉璐 我一進店門桨昙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來检号,“玉大人腌歉,你說我怎么就攤上這事∑肟粒” “怎么了翘盖?”我有些...
    開封第一講書人閱讀 152,543評論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長凹蜂。 經(jīng)常有香客問我馍驯,道長,這世上最難降的妖魔是什么玛痊? 我笑而不...
    開封第一講書人閱讀 55,221評論 1 279
  • 正文 為了忘掉前任汰瘫,我火速辦了婚禮,結(jié)果婚禮上擂煞,老公的妹妹穿的比我還像新娘混弥。我一直安慰自己,他們只是感情好对省,可當我...
    茶點故事閱讀 64,224評論 5 371
  • 文/花漫 我一把揭開白布蝗拿。 她就那樣靜靜地躺著晾捏,像睡著了一般。 火紅的嫁衣襯著肌膚如雪哀托。 梳的紋絲不亂的頭發(fā)上惦辛,一...
    開封第一講書人閱讀 49,007評論 1 284
  • 那天,我揣著相機與錄音仓手,去河邊找鬼胖齐。 笑死,一個胖子當著我的面吹牛嗽冒,可吹牛的內(nèi)容都是我干的市怎。 我是一名探鬼主播,決...
    沈念sama閱讀 38,313評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼辛慰,長吁一口氣:“原來是場噩夢啊……” “哼区匠!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起帅腌,我...
    開封第一講書人閱讀 36,956評論 0 259
  • 序言:老撾萬榮一對情侶失蹤驰弄,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后速客,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體戚篙,經(jīng)...
    沈念sama閱讀 43,441評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,925評論 2 323
  • 正文 我和宋清朗相戀三年溺职,在試婚紗的時候發(fā)現(xiàn)自己被綠了岔擂。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,018評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡浪耘,死狀恐怖乱灵,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情七冲,我是刑警寧澤痛倚,帶...
    沈念sama閱讀 33,685評論 4 322
  • 正文 年R本政府宣布,位于F島的核電站澜躺,受9級特大地震影響蝉稳,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜掘鄙,卻給世界環(huán)境...
    茶點故事閱讀 39,234評論 3 307
  • 文/蒙蒙 一耘戚、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧操漠,春花似錦收津、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蛹稍。三九已至,卻和暖如春部服,著一層夾襖步出監(jiān)牢的瞬間唆姐,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評論 1 261
  • 我被黑心中介騙來泰國打工廓八, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留奉芦,地道東北人。 一個月前我還...
    沈念sama閱讀 45,467評論 2 352
  • 正文 我出身青樓剧蹂,卻偏偏與公主長得像声功,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子宠叼,可洞房花燭夜當晚...
    茶點故事閱讀 42,762評論 2 345

推薦閱讀更多精彩內(nèi)容

  • 通過一段代碼來描述內(nèi)存對齊的現(xiàn)象先巴。 上述代碼打印出來的結(jié)果為:24,16 為什么相同的結(jié)構(gòu)體,只是交換了變量 ab...
    豆瓣菜閱讀 6,682評論 5 26
  • 一冒冬、字節(jié)對齊的規(guī)則: 1伸蚯、一般設(shè)置的對齊方式為1,2简烤,4字節(jié)對齊方式剂邮。結(jié)構(gòu)的首地址必須是結(jié)構(gòu)內(nèi)最寬類型的整數(shù)倍地址...
    呼啦啦的愛閱讀 266評論 0 1
  • 一、為什么結(jié)構(gòu)體內(nèi)存對齊 其實我們都知道横侦,結(jié)構(gòu)體只是一些數(shù)據(jù)的集合挥萌,它本身什么都沒有。我們所謂的結(jié)構(gòu)體地址枉侧,其實就...
    砌豬圈的程序員閱讀 822評論 0 0
  • 1.1 結(jié)構(gòu)體的概念 結(jié)構(gòu)體(struct):是一種復(fù)合數(shù)據(jù)類型引瀑,結(jié)構(gòu)類型。 結(jié)構(gòu)體棵逊,怎么理解伤疙?你可以把它想象成一...
    朝雨晚風(fēng)閱讀 1,754評論 1 3
  • 原文:https://blog.csdn.net/qq_30638831/article/details/8042...
    SkTj閱讀 1,608評論 0 0