黑马程序员技术交流社区

标题: 谁知道结构体内存分配具体规则 [打印本页]

作者: fanxing    时间: 2015-6-13 12:39
标题: 谁知道结构体内存分配具体规则
看了基础加强视频,有一个问题是关于结构体内存分配的有点搞不懂,大神路过给指点一下


作者: 白0702    时间: 2015-6-13 22:36
结构体数据遵循模数对齐原则,因此结构体长度为模数的倍数。具体参照下面程序示例:

struct student{

int  num;

char sex;

float score;

}stu1;

该数据结构中int占4字节,char占1字节,float占4字节,数据占得最大字节数为4,故模数为4,按照模数对齐原则,结构体长度为12。

struct student{

short  num;

char sex;

float score;

}stu1;

上面例子中short占2字节,char占1字节,float占4字节,故模数为4,但前面short和char总共才占3个字节,故4个字节空间可以存放两个变量,因此结构体长度为8。
视频上老师都讲过了,需要自己做一下练习题来深入了解,共同学习了。
作者: fanxing    时间: 2015-6-14 13:33
白0702 发表于 2015-6-13 22:36
结构体数据遵循模数对齐原则,因此结构体长度为模数的倍数。具体参照下面程序示例:

struct student{

感谢,知道了


作者: tabor    时间: 2015-6-16 12:39
好详细,真的要多敲敲才好
作者: talent123    时间: 2015-6-16 15:27
从上往下加
char
char
char
char-----这里是4
char-----这里是5 对齐算作8
最后结果是8






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2