扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
首先把结构体中的内存对齐的规则梳理一下:
1、结构体中的第一个成员存放的首地址是零偏移处
2、结构体成员数据存放的首地址必须是有效对齐参数的整数倍,而有效对齐参数是系统默认对齐参数和数据自身对齐参数两者中的最小值
3、结构体的大小必须是所有成员中的大有效对齐参数的整数倍
4、结构体在内存中是按照顺序存放的
特别注意对齐是相对于结构体变量首地址(即第一个成员存放的首地址)来说的,举个例子:
我们定一个结构体变量如下
struct _test_st
{
uint08 a;
uint32 b;
uint16 c;
}test_st;
结构体变量test_st成员a存放在偏移量为0的地址中,由于对齐规则,b就存放在偏移量为4的地址中,c就存放在偏移量为8的地址中(后面会具体分析)。
接下来进入实战分析。
下面按照系统默认4字节对齐来讲述。
我们定义3个结构体变量:
typedef struct _test_st_1
{
uint08 a1;
uint32 b1;
uint16 c1;
}test_st_1;
typedf struct _test_st_2
{
uint08 a2;
test_st_1 b2;
uint16 c2;
}test_st_2;
typedef struct _test_st_3
{
uint08 a3;
uint64 b3;
uint16 c3;
}test_st_3;
test_st_1 st1;
test_st_2 st2;
test_st_3 st3;
uint08 array[48];
uint08 len_1
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流