先记住常用类型在32和64位的字节
类型 | 32位 | 64位 |
---|---|---|
char | 1 | 1 |
int | 4 | 4 |
short | 2 | 2 |
float | 4 | 4 |
double | 8 | 8 |
指针 | 4 | 8 |
只有指针在64位时不同,是8。函数指针的typedef声明不参与计算。枚举类型占内存4字节。
字节对齐
终于搞清楚结构体的字节对齐怎么计算了,看了那么多国内博客,大部分都不靠谱,要不然就是不知所云,最后看了一个印度三哥的视频讲解,没用3分钟就明白了。其实就一条规则:计算时按最大成员的大小进行逐个判断,有需要就补位
直接看几个例子: