g++编译器对象模型

axiaojikuaipao 2017-06-02 07:26:10
#include <iostream>
using namespace std;
//////////////////////////////////////////////////////////////////
class Base
{
public:
Base(int a = 10):a(a)
{
}
virtual void show()
{
cout << "Base::show()" << endl;
}
private:
int a;
};
在linux g++64位编译器下,这个类为什么是16字节的,不应该是8位的虚表指针加上int 4个字节共十二字节吗?
只包含一个char的类的大小是4字节,说明对齐方式是四字节,难道有两种对齐方式,小于4的对齐成4字节,大于4的对齐成8字节?
...全文
99 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
axiaojikuaipao 2017-06-04
  • 打赏
  • 举报
回复
问题解决了,是因为内存对齐,默认是sizeof最大的字节数的整数倍,所以最后4个字节会被填0,以达到8的倍数.
赵4老师 2017-06-02
  • 打赏
  • 举报
回复
64位有64位的标准。

3,881

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧