类对象存储模型
一个结构体定义完了之后,其在内存中的存储并不等于所有元素宽度之和。
基本数据类型结构体遵循
原则一:结构体中的元素是按照定义的顺序一个个放到内存中去的,并不紧密排布。从内存存储单元的首地址(0)开始,每一个元素都认为内存根据它的大小来划分,所以每一个元素存放的位置从自己宽度的整数倍开始。
原则二:经原则一后,计算出结构体的存储单元是否是宽度最长元素的整数倍,若不是则补充到其整数倍。
2.指针类型结构体
指针占用存储空间4字节,不必在意什么类型
3.综合内存对齐例子
定义test1的两个元素int型的d和test型的b,则系统为d分配的是0-3个字节,为b分配的存储位置是第8-32个字节,
加
起来一共28个字 节,不是最长基本类型double所占宽度8的整数倍,因此要补齐到8的整数倍,即32。测试后可得sizeof(test1)的值是32。
如果将test1的两个元素int型的d和test型的b调换定义顺序,则系统为b分配的存储位置是第0-23个字节,为d分配的是第24个字节。加起来一共28个字节,不是最长基本类型double所占宽度8的整数倍,因此要补齐到8的整数倍,即32。测试后可得sizeof(test1)的值是32。
转载请注明原文地址: https://www.6miu.com/read-2622016.html