求教macbook下顯示結(jié)果不太一樣?
mac下一個(gè)指針占據(jù)8個(gè)字節(jié),實(shí)例化Circle類(lèi)時(shí)對(duì)象大小應(yīng)該 = (int) 4字節(jié) + (int *)8字節(jié)=12字節(jié)才對(duì)吧,為啥結(jié)果是16呢,求教?
mac下一個(gè)指針占據(jù)8個(gè)字節(jié),實(shí)例化Circle類(lèi)時(shí)對(duì)象大小應(yīng)該 = (int) 4字節(jié) + (int *)8字節(jié)=12字節(jié)才對(duì)吧,為啥結(jié)果是16呢,求教?
2018-06-10
舉報(bào)
2018-07-10
C/C++ 語(yǔ)言中,編譯器為方便操作系統(tǒng)進(jìn)行尋址和數(shù)據(jù)傳遞,struct 和 class 的數(shù)據(jù)成員存在內(nèi)存對(duì)齊的問(wèn)題。因此對(duì)對(duì)象進(jìn)行 sizeof 不是數(shù)據(jù)成員的簡(jiǎn)單相加,需要考慮編譯器的 padding 字節(jié)大小。
具體細(xì)節(jié)原理:如何理解 struct 的內(nèi)存對(duì)齊? - Courtier的回答 https://www.zhihu.com/question/27862634/answer/38447033
供你參考 :)
2018-06-12
你用int*強(qiáng)制轉(zhuǎn)換了circle,它的數(shù)據(jù)成員也變成int*型的了,8+8=16