C语言对齐、补齐

加快CPU读取数据的速度

aligned(n)
让所作用的结构成员对齐在n字节自然边界上。如果结构中有成员的长度大于n,则按照最大成员的长度来对齐

struct s
{
    char c;
    int i;
    short s;
}__attribute__((aligned(1)));

sizeof:12

packed
取消编译过程中的优化对齐,按照实际占用字节数进行对齐

struct s
{
    char c;
    int i;
    short s;
}__attribute__((packed));

sizeof:7

pack(n)

#pragma pack(1)
struct s
{
    char c;
    int i;
    short s;
};
#pragma pack() //取消

sizeof:7

空间换时间

struct s
{
    char c;
    char reserved[3]; //空间换时间
    int i;
};

图解
sizeof

posted @ 2017-05-29 13:10  thomas_blog  阅读(217)  评论(0编辑  收藏  举报