首页 > 其他 > 详细

每日一练0810--结构体内存对齐

时间:2020-08-10 21:40:41      阅读:93      评论:0      收藏:0      [点我收藏+]

每日一练0810--结构体内存对齐

typedef struct bb

{

    int id;  

    double weight; 

    float height; 

}BB;

 

typedef struct aa

{

    char name[2];

    int  id;

    short score;

    short grade; 

    BB b;

}AA;

这两个结构体 分别占用多大的内存,为什么?

结构体BB占24个字节,结构体AA占12个字节。因为结构内存对齐原则,结构体的总大小,为其成员中所含最大类型的整数倍。

结构体BB中,最大的数据类型是double 8个字节,变量id 为int 类型占4个字节,但weight为double类型占8个字节,8+4>8,所以id占8个字节的内存大小,weight占8个字节的内存大小,height占8个字节的内存大小,所以结构体BB总共占24个字节,BB在内存中的结构图为:

 技术分享图片

 

结构体AA的最大数据类型为结构体b的最大数据类型,即b中的变量weight的大小8个字节,所以AA的内存大小是8的整数倍。变量name占2个字节,id 占4个字节,score占2个字节,所以前3个变量占8个字节,grade占8个字节,结构体b占24个字节,所以结构体AA占40字节。AA在内存中的结构图为:

技术分享图片

 

每日一练0810--结构体内存对齐

原文:https://www.cnblogs.com/xiaohzd/p/13472142.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!