详解参考以上网址
#include <iostream>
#include"human.h"
#include"men.h"
using namespace std;
//内存对齐
struct mystruct1
{
char cad; //偏移地址0
double aad; //偏移地址1,不是8的倍数,编译器补充7个字节,从第8个字节开始存储
int iad; //偏移地址16,是4的倍数
float fad; //偏移地址20,是4的倍数
//占据的内存空间为 1+7+8+4+4=24kb
};
struct mystruct2
{
double aad;//偏移地址0
char cad; //偏移地址8
int iad; //偏移地址9,不是4的倍数,编译器补充3个字节,从12开始储存
float fad; //偏移地址16,,是4的倍数
//占据的内存空间 8+1+3+4+4=20,不是最大8数据类型double的倍数,所以还要补充四个字节
//24
};
#pragma pack(1)
struct mystruct3
{
double aad;//偏移地址0
char cad; //偏移地址8
int iad; //偏移地址9
float fad; //偏移地址13
//内存 8+1+4+4=17
};
#pragma pack(1)
int main()
{
cout << sizeof(mystruct1) << endl;//24
cout << sizeof(mystruct2) << endl;//20
cout << sizeof(mystruct3) << endl;//17
}