黑马程序员技术交流社区
标题:
内存空间分配
[打印本页]
作者:
wx_rMI3RFr8
时间:
2016-4-23 01:21
标题:
内存空间分配
struct student{
int age;
char name[20];
char sex;
};
求大神指点下这个结构体的长度是多少?为啥是这样的,一直没想明白.谢谢
作者:
a_skting
时间:
2016-4-23 11:14
还没学到结构体。。。4+20+1+还有别的东西吗?坐等答案。。。。
作者:
basketball
时间:
2016-4-23 22:50
还没学到这里,同求~~~~~~~
作者:
烛风小糊涂
时间:
2016-4-23 23:40
sizeof了一下,占28个字节。以下是基础班视频的内容:
计算结构体变量在内存中占用的字节数的方法:
1. 先找对齐模数;
对齐模数:是结构体中的基本数据类型中占用字节数最大的那个;
2. 在计算结构体变量中的各个成员占用的字节和
在这里就是4+20+4 = 28;
那么为什么呢?
因为在这里,基本数据类型占字节数最大的是int类型,占4个字节,那么ok,就以4作为对齐模数-----毫无疑问,age被分配了4个字节;因为20正好是4的倍数,name[20]被分配了20个字节;sex被分配了4个字节,虽然char类型只占一个字节,但是由于对齐模数为4,而且前面分配完的24个字节正好被占得满满的,导致系统不得不为char sex多分配一块存储空间,而新划分的存储空间只能是4的倍数,所以虽然char类型本来只占一个字节,但是在这里它占用了4个字节的,相当于你拿了4碗饭,但只吃一碗,有3碗空着。
如有错误,恳请指正,不胜感激!
作者:
叶子哥
时间:
2016-4-23 23:53
有关结构体占用内存的大小问题,首先查看每个成员的类型大小,取其最大的类型作为整个结构体的模数.然后每个成员的占用内存的大小都是模数的最小倍数,最后相加得结果.
对于这题,最大的类型为 int类型,4个字节,所以模数为4. 然后对int age-->为1个模数;char name[20]-->为5个模数;
char sex-->为1个模数;最后相加得占用内存28个字节.
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2