C++中对struct求sizeof,64位的机器

hustluotao 2016-02-24 01:23:41
struct s1 {
int a;
long long b;
char c;
};

struct s2 {
long long a;
int b;
char c;
};
sizeof(s1)跑出来是24
sizeof(s2)跑出来是16
不知道为什么,求大神解答!!!不胜感激
...全文
203 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
hustluotao 2016-02-24
  • 打赏
  • 举报
回复
懂了,谢谢各位
天外怪魔 2016-02-24
  • 打赏
  • 举报
回复
8字节对齐。 s1中a,b,c各占8个字节,共24字节。 s2中a占8字节,b和c一起占8直接,共16字节。
ztenv 版主 2016-02-24
  • 打赏
  • 举报
回复
都按8节字对齐的…………
paschen 版主 2016-02-24
  • 打赏
  • 举报
回复
结构体的对齐问题 你这里应该是以8字节对齐 第一种情况int后填充4个字节,char后填充7个字节,所以一共24 第二种情况 int 和 char 共用 8字节,后面再填充3字节,所以一共16 关于结构体对齐问题去网上大把文章讲解
  • 打赏
  • 举报
回复
这种问题直接google 结构体内存对齐

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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