110,499
社区成员
发帖
与我相关
我的任务
分享
StructLayoutAttribute(Value = LayoutKind.Sequential,Pack = 8)
;Marshal.SizeOf(typeof(StructName))
;//16字节
struct S1
{
sbyte b; //1
long l; //8
}
//16字节
struct S11
{
long l; //8
sbyte b; //1
}
struct S2 //32字节
{
int x; //4
double b; //8
double c; //8
byte a; //1
}
struct S3 //24字节
{
byte a; //1
int x; //4
double b; //8
double c; //8
}
struct S4 //12
{
sbyte s;//1
int i1; //4
int i2; //4
}
struct S2 //32字节
{
int x; //4 :0~3
double b; //8 :8-4=4,不足以保存double的8字节,所以此处浪费4字节,double b位置:8~16
double c; //8 :17~24
byte a; //1 :25,但根据字节对齐原则,后面7个字节留空
}
struct S3 //24字节
{
byte a; //1 :0
int x; //4 :1~4
double b; //8 :8-5不足以保存double,则浪费3字节,double b位置:8~16
double c; //8 :17~24
}