为了账号安全,请及时绑定邮箱和手机立即绑定

求教macbook下显示结果不太一样?

mac下一个指针占据8个字节,实例化Circle类时对象大小应该 = (int) 4字节 + (int *)8字节=12字节才对吧,为啥结果是16呢,求教?

https://img1.sycdn.imooc.com//5b1d006d000155f916081322.jpg

正在回答

2 回答

C/C++ 语言中,编译器为方便操作系统进行寻址和数据传递,struct 和 class 的数据成员存在内存对齐的问题。因此对对象进行 sizeof 不是数据成员的简单相加,需要考虑编译器的 padding 字节大小。

具体细节原理:如何理解 struct 的内存对齐? - Courtier的回答 https://www.zhihu.com/question/27862634/answer/38447033

供你参考 :)

0 回复 有任何疑惑可以回复我~

你用int*强制转换了circle,它的数据成员也变成int*型的了,8+8=16

1 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C++远征之多态篇
  • 参与学习       66223    人
  • 解答问题       334    个

本教程将带领大家体会面向对象三大特性中的多态特性

进入课程

求教macbook下显示结果不太一样?

我要回答 关注问题
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号