字节对齐说明
举例说明
typedef struct
{
char a; //1byte
int b; //4byte
char c[2]; //2byte
double d; //8byte
}size_A_t;
求分别在8,16,32,64,位机中sizeof(size_A_t)的大小
在8位机中,字节按照1byte对齐,所以sizeof(size_A_t)=1+4+2+8=15;
在16位机中,字节按照2byte对齐,所以sizeof(size_A_t)=2+4+2+8=16;
在32位机中,字节按照4byte对齐,所以sizeof(size_A_t)=4+4+4+8=20;
在64位机中,字节按照8byte对齐,所以sizeof(size_A_t)=4+4+8+8=24;
如下类型所占的内存为:
char: 1byte
int : 4byte
float: 4byte
double:8byte
packed的使用说明
使用方法:
1.#pragma pack (1) //1 2 4 8
2.typedef struct attribute ((packed)){} example_t;
3.typedef __packed struct {}example_t;
使用pack(1)的优缺点
优点:节约内存,用时间换空间
缺点:如果变量的地址没有对齐时,需要多次读取才能完成,影响CPU的速度。大大降低了CPU性能