黑马程序员技术交流社区

标题: 结构体内存分析的快速计算 [打印本页]

作者: dojimmy    时间: 2015-11-30 22:17
标题: 结构体内存分析的快速计算
本帖最后由 dojimmy 于 2015-11-30 22:21 编辑

          我们知道结构体的内存老师可能讲得很复杂,有部分同学可能听不明白,这里给大家讲一种比较特殊的方法,能帮大家通熟易懂的理解。
         首先我们都知道我们在初中或者小学学的公倍数,先根据结构体内最大的一个元素,那么公倍数就是最大元素所占的字节数,结构体占的字节数就是公倍数的整数倍。后面的元素占的字节数先分配最大元素字节数,然后小的补齐,不够再分配
例如:struct Person{int *name;int age;char c;};
公倍数为8个字节,先为后面的age分配8个字节,然后age占不了8位,剩下的就是c占有的字节,总占16个字节;
例如:struct Person{int *name;int age;int *detail;};
同理,公倍数8,第二个age占不了8个,但是后面的detail又不够,所以重新分配8个字节给detail,也就是24个字节。
如有错误,请见谅,大家好好学习!

作者: 亚里士缺德    时间: 2015-11-30 22:22
占个沙发
作者: 罗文强    时间: 2015-11-30 23:07
谢谢楼主分享!
作者: Tmac90301    时间: 2015-11-30 23:13
这个问题其实很简单。先找出最大的基本类型,以其占用的空间为模,从结构体第一个元素开始存放。存放完一个元素后有空余的空间足够存下下一个元素,那就补上,不足,就另起一个模单位重新寸
作者: 代战    时间: 2015-12-1 12:31
赞一个 顶起来




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