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

关于64位系统的内存占用

是这样的,我是ubuntu64位的系统,测试过后,虚函数表占用8块内存,一个int占用4块内存.

输出Circle类的长度,本应该是12,但却输出了16.有大神能解释一下为什么么.

开始觉得可能是继承了Shape类的关系,于是就去掉了继承的代码,依旧输出16.

然后又把虚函数都注释掉了,声明了三个int,正常输出12.取消注释后,输出了24.又多了4块内存.

但我把数据成员全部注释掉后,只剩虚函数,又确确实实是打印的8.

那那4块内存究竟被谁占用了,求大神解答,代码如下

http://img1.sycdn.imooc.com//5998fe0a0001cd8019201080.jpg

http://img1.sycdn.imooc.com//5998fe0c00012c3019201080.jpg


正在回答

3 回答

这应该是c语言的内存对齐吧

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

空间大小为2的整数倍,像C语言里的结构体。

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

因为你有virtual 所以会创建虚指针表,前4个内存单元存放的是虚指针表

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

云霄v

你把virtual去掉 就会少4个内存单元
2017-08-20 回复 有任何疑惑可以回复我~
#2

Uchiha_Obito 提问者

我的虚函数表占用8个内存单元。。
2017-08-21 回复 有任何疑惑可以回复我~

举报

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

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

进入课程

关于64位系统的内存占用

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

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

帮助反馈 APP下载

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

公众号

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