先给个小例子
#include <stdio.h>
struct A_st {
char c;
int i;
};
#pragma pack(1)
struct B_st {
char c;
int i;
};
#pragma pack()
int main() {
printf("sizeof(struct A_st) = %d\n", sizeof(struct A_st));
printf("sizeof(struct B_st) = %d\n", sizeof(struct B_st));
return 0;
}
运行结构
sizeof(struct A_st) = 8
sizeof(struct B_st) = 5
很容易看出在没有pragma pack(1)的作用下,默认是会进行字节对齐,而pack(1)则是以1个字节对齐的规则来分配内存.
虽然这种可以节省内存,但是在对于缓存的读写效率会有损耗.