sizeof的计算

loop_k 2010-08-02 03:52:53
struct S1
{
int a;
char b;

short d;
char c;

};

struct S2
{
int a;
char b;

char c;
short d;

};

sizeof(S1) = 8
sizeof(S2) = 12
第二个为什么?内存对齐的话 第一个是4个字节 后面char 和 short改变顺序 应该没有 影响吧
...全文
88 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
loop_k 2010-08-02
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 hai040 的回复:]
子类的数据不会跟父类占用同一个4字节
[/Quote]

学习了,多谢了哈
hai040 2010-08-02
  • 打赏
  • 举报
回复
子类的数据不会跟父类占用同一个4字节
loop_k 2010-08-02
  • 打赏
  • 举报
回复
恩 贴错了 是写反了
没有考虑偏移 。那下面一种情况呢


class A2
{
public:
int a;
private:
char b;
};

class A3:public A2
{
public:
char c;
short d;
};


class A4:public A2
{
public:
short e;
char f;
};



void main()
{
cout<<sizeof(A3)<<endl
<<sizeof(A4)<<endl;
system("pause");
}

这时的结果都是 12 该怎么理解呢 谢谢
lingyin55 2010-08-02
  • 打赏
  • 举报
回复
对于int,short类型的变量必须从偶地址开始分配
hai040 2010-08-02
  • 打赏
  • 举报
回复
说反了s1是12,s2是8
short始偏移要是双数
  • 打赏
  • 举报
回复
有影响...

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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