C&C++ struct的大小

為了提高CPU的存儲(chǔ)速度,編譯器對(duì)一些變量的起始地址做了”對(duì)齊”處理。在默認(rèn)情況下,編譯器規(guī)定各成員變量存放的起始地址相對(duì)于結(jié)構(gòu)的起始地址的偏移量必須為該變量的類型所占用的字節(jié)數(shù)的倍數(shù)。

字節(jié)對(duì)齊的細(xì)節(jié)和編譯器實(shí)現(xiàn)相關(guān),但一般而言,滿足三個(gè)準(zhǔn)則:

  1. 結(jié)構(gòu)體變量的首地址能夠被其最寬基本類型成員的大小所整除;
  2. 結(jié)構(gòu)體每個(gè)成員相對(duì)于結(jié)構(gòu)體首地址的偏移量(offset)都是成員大小的整數(shù)倍,如有需要編譯器會(huì)在成員之間加上填充字節(jié)(internal adding);
  3. 結(jié)構(gòu)體的總大小為結(jié)構(gòu)體最寬基本類型成員大小的整數(shù)倍,如有需要編譯器會(huì)在最末一個(gè)成員之后加上填充字節(jié)(trailing padding)。
struct MyStruct{
 double dda1;
 char dda;
 int type
};

sizeof(MyStruct) 為 8+1+3+4=16

struct MyStruct{
char dda;
double dda1;
int type;
};

sizeof(MyStruct) 為 1+7+8+4+4=24

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 首先感覺(jué)本文原作者的分享 w57w57w57的專欄-CSDN博客網(wǎng)址: http://blog.csdn.net/...
    HelloGeekBand閱讀 2,430評(píng)論 0 7
  • 注:這是第三遍讀《C語(yǔ)言深度解剖》,想想好像自從大學(xué)開(kāi)始就沒(méi)讀完過(guò)幾本書(shū),其中譚浩強(qiáng)的那本《C語(yǔ)言程序設(shè)計(jì)(第四版...
    HavenXie閱讀 1,917評(píng)論 1 6
  • GNU C的一大特色就是__attribute__機(jī)制。__attribute__可以設(shè)置函數(shù)屬性(Functio...
    閉家鎖閱讀 17,533評(píng)論 0 5
  • 清脆的鳥(niǎo)鳴 樹(shù)葉沙沙輕搖 網(wǎng)床中悠閑無(wú)聊地 伴著無(wú)奈的思緒 仰望蔚藍(lán)天空思考人生 偶爾公雞扯著喉嚨呼幾聲 可愛(ài)的小...
    肖文999閱讀 536評(píng)論 0 0
  • 我喜歡讀書(shū),因?yàn)樽x書(shū)可以讓你知道一些知識(shí),而且,讀書(shū)還能讓人心靜,讓調(diào)皮的人、心煩的人靜下來(lái)。對(duì)我來(lái)說(shuō),讀書(shū),就是...
    心之物語(yǔ)閱讀 267評(píng)論 1 2

友情鏈接更多精彩內(nèi)容