C++ 八股求助 字节对齐

// 情况1
class A {
	int a;
  	int b;
  	char c;
};
// 因为对齐,sizeof(A) 是 12

// 情况2
class A {
    char c;
	int a;
  	int b;
};

 class B {
   A a;
	char d;
 };
// sizeof(B) 是 16 

两种情况,问假设编译器为了节省空间,B的成员d能不能直接紧挨在A的成员c的下面,如果可以有为什么问题吗

#八股##C++##计算机组成原理##面试##悬赏#
全部评论
好强
1 回复 分享
发布于 08-19 23:36 黑龙江
情况2:对于POD编译器不能改排布,所以肯定不行;情况1:按对齐的目的来说紧挨着没问题,但由于某些历史原因(Itanium ABI??),tail padding reuse没启用?标准没定义这种优化吧,考这种有点无厘头了
1 回复 分享
发布于 08-20 01:30 四川
试着改一下位置 把d放在A头上 明天我去测一下
点赞 回复 分享
发布于 08-19 00:45 陕西
不能的因为padding已经加到了a上面了
点赞 回复 分享
发布于 08-19 10:34 广东

相关推荐

前两天有个明年6月份研究生毕业的同学来找我看简历。她说自己本科、研究生基本都在学校里,没做过什么实习。现在要找工作了,感觉简历很单薄,问我有什么方法能够让她的简历看上去更丰富一点。我看了她的简历,其实蛮丰富的。虽然没有在公司里实习的经历,但也组织过一些学校的活动,担任过班级和学生会的一些职务,其实没她自己说得那么单薄。她问我:“但我听说公司招人很看重实习经历,像我这样的简历是不是找工作很困难?”我说:“公司招应届生确实挺看重实习经历的。如果你之前的实习经历和你现在想应聘的岗位是相关的,公司就会觉得你对我们这个岗位是有概念的,有一些基础,不必从零开始教你。所以有实习经历确实是个比较大的优势。”她说:“那我怎么办啊?啥实习都没有!”我说:“你距离明年毕业还有9个月的时间,从零开始积累实习经验都来得及!一般一份实习做3个月,9个月你都可以做3份实习了。现在开始做真的不晚!”我经常建议毕业以后想要进入企业工作的同学在大学期间多做实习。做实习的真正目的其实不是为了让你的简历更好看,而是在这个过程中探索自己究竟对什么样的工作感兴趣、可以接受什么样的工作状态。学生身份的试错成本是很低的,利用好这段时间多多尝试。虽然不太可能一下子就找到那份愿意干一辈子的工作,但至少能通过更多的尝试,找到自己相对能接受的那份工作。虽然几乎每一份工作都有令人痛苦的时刻,但我相信没有人不想让自己在工作中能够开心一点。“用最小的成本多多进行尝试”就是能够让你的第一份工作相对开心一点最好的办法! #牛客创作赏金赛#
点赞 评论 收藏
分享
3 2 评论
分享
牛客网
牛客企业服务