struct 结构体分析
作者:互联网
struct分析
1.无成员的空结构体size为 1byte
2.通过/zp可以调整对齐值,默认是8字节
//设编译对齐设定值为Zp
//设成员变量的类型为 member type
//设成员变量在结构体内的偏移量为member offset
//member offset % min(Zp,sizeof(member type)) == 0
//整个结构体变量占用内存的长度为StructSize
//定义结构体自身的对其值为StructAlig
//StructAlig = max(sizeof(member1 type),sizeof(member2 type),sizeof(member3 type).....sizeof(memberN type))
//必须满足:
StructSize % min (StructAlig,Zp) ==0
//网络数据传输时,通常把Zp设为1
struct tagPerson
{
char szName[5]; //+0
int nHeight; //+8
char cGender; //+16
double dblWeight;//+24
short nAge; //+32
};
//sizeof tagPerson ==32
int main(int argc, char* argv[])
{
struct tagPerson per = {
"jack",
185,
'M',
80.0,
23
};
}
结构体嵌套
设成员结构体变量的偏移量为StructOffset
设该成员结构体变量的自身的对齐值为StructAlig
必须满足
StructOffset % min(Zp,StructAlig) == 0
数据关系
进程查线程
线程查进程
标签:分析,struct,Zp,member,StructAlig,sizeof,type,结构 来源: https://www.cnblogs.com/doubleconquer/p/16386958.html