#pragma pack(1)
struct AA {
int a; //长度4 < 1 按1对齐;偏移量为0;存放位置区间[0,3]
char b; //长度1 = 1 按1对齐;偏移量为4;存放位置区间[4]
short c; //长度2 > 1 按1对齐;偏移量为5;存放位置区间[5,6]
char d; //长度1 = 1 按1对齐;偏移量为6;存放位置区间[7]
//整体存放在[0~7]位置区间中,共八个字节。
};
#pragma pack()
#pragma pack(2)
struct AA {
int a; //长度4 > 2 按2对齐;偏移量为0;存放位置区间[0,3]
char b; //长度1 < 2 按1对齐;偏移量为4;存放位置区间[4]
short c; //长度2 = 2 按2对齐;偏移量要提升到2的倍数6;存放位置区间[6,7]
char d; //长度1 < 2 按1对齐;偏移量为7;存放位置区间[8];共九个字节
};
#pragma pack()
#pragma pack(4)
struct AA {
int a; //长度4 = 4 按4对齐;偏移量为0;存放位置区间[0,3]
char b; //长度1 < 4 按1对齐;偏移量为4;存放位置区间[4]
short c; //长度2 < 4 按2对齐;偏移量要提升到2的倍数6;存放位置区间[6,7]
char d; //长度1 < 4 按1对齐;偏移量为7;存放位置区间[8];总大小为9
};
#pragma pack()
#pragma pack(8)
struct AA {
int a; //长度4 < 8 按4对齐;偏移量为0;存放位置区间[0,3]
char b; //长度1 < 8 按1对齐;偏移量为4;存放位置区间[4]
short c; //长度2 < 8 按2对齐;偏移量要提升到2的倍数6;存放位置区间[6,7]
char d; //长度1 < 8 按1对齐;偏移量为7;存放位置区间[8],总大小为9
};
#pragma pack()
struct EE
{
int a; //长度4 < 8 按4对齐;偏移量为0;存放位置区间[0,3]
char b; //长度1 < 8 按1对齐;偏移量为4;存放位置区间[4]
short c; //长度2 < 8 按2对齐;偏移量由5提升到6;存放位置区间[6,7]
//结构体内部最大元素为int,由于偏移量为8刚好是4的整数倍,所以从8开始存放接下来的struct FF
struct FF
{
int a1; //长度4 < 8 按4对齐;偏移量为8;存放位置区间[8,11]
char b1; //长度1 < 8 按1对齐;偏移量为12;存放位置区间[12]
short c1; //长度2 < 8 按2对齐;偏移量为13,提升到2的倍数14;存放位置区间[14,15]
char d1; //长度1 < 8 按1对齐;偏移量为16;存放位置区间[16]
};
//整体对齐系数 = min((max(int,short,char), 8) = 4,将内存大小由17补齐到4的整数倍20
char d; //长度1 < 8 按1对齐;偏移量为21;存放位置区间[21]
//整体对齐系数 = min((max(int,short,char), 8) = 4,将内存大小由21补齐到4的整数倍24
};
struct B {
char e[2]; //长度1 < 8 按2对齐;偏移量为0;存放位置区间[0,1]
short h; //长度2 < 8 按2对齐;偏移量为2;存放位置区间[2,3]
//结构体内部最大元素为double,偏移量为4,提升到8,所以从8开始存放接下来的struct A
struct A {
int a; //长度4 < 8 按4对齐;偏移量为8;存放位置区间[8,11]
double b; //长度8 = 8 按8对齐;偏移量为12,提升到16;存放位置区间16,23]
float c; //长度4 < 8,按4对齐;偏移量为24,存放位置区间[24,27]
};
//整体对齐系数 = min((max(int,double,float), 8) = 8,将内存大小由28补齐到8的整数倍32
};
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有