課程
/后端開發
/C++
/C++遠征之多態篇
mac下一個指針占據8個字節,實例化Circle類時對象大小應該 = (int) 4字節 + (int *)8字節=12字節才對吧,為啥結果是16呢,求教?
2018-06-10
源自:C++遠征之多態篇 2-9
正在回答
C/C++ 語言中,編譯器為方便操作系統進行尋址和數據傳遞,struct 和 class 的數據成員存在內存對齊的問題。因此對對象進行 sizeof 不是數據成員的簡單相加,需要考慮編譯器的 padding 字節大小。
具體細節原理:如何理解 struct 的內存對齊? - Courtier的回答 https://www.zhihu.com/question/27862634/answer/38447033
供你參考 :)
你用int*強制轉換了circle,它的數據成員也變成int*型的了,8+8=16
舉報
本教程將帶領大家體會面向對象三大特性中的多態特性
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2018-07-10
C/C++ 語言中,編譯器為方便操作系統進行尋址和數據傳遞,struct 和 class 的數據成員存在內存對齊的問題。因此對對象進行 sizeof 不是數據成員的簡單相加,需要考慮編譯器的 padding 字節大小。
具體細節原理:如何理解 struct 的內存對齊? - Courtier的回答 https://www.zhihu.com/question/27862634/answer/38447033
供你參考 :)
2018-06-12
你用int*強制轉換了circle,它的數據成員也變成int*型的了,8+8=16