字节对齐

vc环境:

结构的首地址必须是结构内最宽类型的整数倍地址; 另外,结构体的每一个成员起始地址必须是自身类型大小的整数倍 ( 需要特别注意的是windows下是这样的,但在linux的gcc编译器下最高为4字节对齐)

 

 

struct A
{
    int a;      
    char b;               
    short c;    
};                    vc: 8B    gcc: 8B
struct B
{
    char b;     
    int a;      
    short c;       
};                    vc: 12B    gcc: 12B
struct C { double t; char b;
int a; short c; };                    vc: 24B    gcc: 20B
struct D { char b; double t; int a; short c; };                    vc: 24B    gcc: 20B

 

 gcc、vc设置紧缩结构

#pragma pack(push, 1)

typedef struct St2Tag

{

    St1 st1;

    char ch2;

} St2;

#pragma pack(pop)

 

 

 

 

posted @ 2016-08-03 14:32  挨踢淫才  阅读(121)  评论(0编辑  收藏  举报