c++中的对齐问题
struct A
{
char d;
int a;
float c;
double b;
};
为什么sizeof(A)=24;
如果按照四字节对齐,A的大小不应该是4+4+8+4,20字节吗?
{
char d;
int a;
float c;
double b;
};
为什么sizeof(A)=24;
如果按照四字节对齐,A的大小不应该是4+4+8+4,20字节吗?
全部评论
得是最大类型的整数倍,为了进cpu缓存能直接整行读取
默认按照最大的数据类型字节数对齐,八字节对齐,所以是24
4 + 4 + 4 + (4) + 8
和CPU没关系,按double对齐,char和int可以放在一行
可以考虑一下招联金融哦,招行和联通合办的呢,流程10月11开始呢,可以看我主页https://www.nowcoder.com/share/jump/661068193252635417
cpp选手投起来
double几个字节?
八字节对齐
你应该用的是64位的cpu,所以按照八字节对齐的,编译器决定的,常见编译器应该都会这样分不过没有保证,因为不是语言标准。
对齐两次吧,20是第一次对齐,然后还要调整到最大元素的整数倍?
最后要按照结构体内最大的8对齐
4(空3) 4 8(空4) 8 这样?
相关推荐
11-24 10:46
山东大学 嵌入式软件工程师 给一个offer求了:他也还好吧,跟大部分人比他算是很幸运的了,感觉他三句话离不开北大,但是如果他出生在距离北京八中50公里以外的河北省,他的人生会截然不同诶。京津冀总给人一种特别割裂的感觉。
点赞 评论 收藏
分享
白烁:respect
点赞 评论 收藏
分享
10-16 12:29
携程_移动安全研发 Yushuu:你的确很厉害,但是有一个小问题:谁问你了?我的意思是,谁在意?我告诉你,根本没人问你,在我们之中0人问了你,我把所有问你的人都请来 party 了,到场人数是0个人,誰问你了?WHO ASKED?谁问汝矣?誰があなたに聞きましたか?누가 물어봤어?我爬上了珠穆朗玛峰也没找到谁问你了,我刚刚潜入了世界上最大的射电望远镜也没开到那个问你的人的盒,在找到谁问你之前我连癌症的解药都发明了出来,我开了最大距离渲染也没找到谁问你了我活在这个被辐射蹂躏了多年的破碎世界的坟墓里目睹全球核战争把人类文明毁灭也没见到谁问你了😆
点赞 评论 收藏
分享