#include <stdio.h>
//默认情况下,结构体一般在内存中的自动对齐格式是4个字节
//结构体设置手动对齐
//如果这里是4,那么下面的打印就是8
//如果这里是2,那么下面的打印就是6
//如果这里是1,那么下面的打印就是5
#pragma pack(4)
struct mystu
{
char a ;
int b ;
};
#pragma pack()
int main(void)
{
printf("str:%d\n",sizeof(struct mystu));
return 0 ;
}
自动对齐不需要加#pragma pack这个宏。
另外,GCC推荐的对齐指令如下:
_attribute_((packed))和_attribute_((aligned(n)))