如下面这个结构体:
typedef struct P
{
double a;
int c;
char b;
int d;
}PPP;
通过 sizeof 计算其内存,大小为多少?
答:如果是默认的设置的话,其大小应该为 24
是因为结构体存在字节对齐的概念,为了提高存取效率,32位的计算机,一次可以读取4个字节的内存,如果不进行字节对齐操作,读取一个 int 值的数据,可能需要两次读取内存操作,大大的减小了内存读取效率,这个编译器优化的部分,当然也可以自己设置。那么,如何设置呢?
- 1、通过VS项目配置设置
2、通过程序中
#pragma pack(1)
上面这个代码的意思是按字节为1对齐,之后就可以按照每个成员多少字节进行处理了。