#include<iostream>
//#pragma pack(2)
//代表变量类型低于2个字节的,按照2个字节来对齐,
//大于2个字节的数据类型,按照本身的大小来对齐
//例如int 4个字节,就算设置了pack(2) 内存对齐也是按照4对齐
#pragma pack(2)
struct a {
char buf[13]; // 7个2字节的=14字节
int i; //4字节
};
#pragma pack()
//sizeof(a)=18字节
#pragma pack(2)
struct a {
char buf[13]; // 7个2字节的=14字节
int i; //4字节
long long b; //8字节
};
#pragma pack()
//sizeof(a)=26字节
#pragma pack(2)
struct a {
char buf[13]; // 7个2字节的=14字节
int i; //4字节
short b; //2字节
};
#pragma pack()
//sizeof(a)=20字节
#pargma pack(2)
union a{
char buf[3]; //2个2字节=4字节
int i; //4字节
//由于是联合体,按最大变量大小来对齐计算共享内存
};
#pargma pack()
//sizeof(a)=4字节
#pargma pack(2)
union a{
char buf[3]; //2个2字节=4字节
long long i; //8字节
//由于是联合体,按最大变量大小来对齐计算共享内存
};
#pargma pack()
//sizeof(a)=8字节
#pargma pack(2)
union a{
char buf[13]; //7个2字节=14字节
int i; //4字节
//由于是联合体,按最大变量大小来对齐计算共享内存
};
#pargma pack()
//sizeof(a)=14字节
#pragma pack(2)
union a {
char buf[13]; // 7个2字节的=14字节
int i; //4字节
};
struct b {
a a2; //14字节
char buf2[13]; //14字节
};
#pragma pack()
//sizeof(a)=28字节
#pargma pack(2)和结构体 联合体的应用
最新推荐文章于 2024-04-23 16:09:18 发布