现在的位置: 首页 > 综合 > 正文

struct 对齐问题

2018年02月12日 ⁄ 综合 ⁄ 共 270字 ⁄ 字号 评论关闭

 struct aa

{

int a;

char b;

}

sizeof(aa)得到的是8而不是5

因为结构在内存中的存储是按照最大的那个类型为单位的,

int 占4个字节,对应的b也是4个字节所以统计出来是长度是8

 

#pragma pack(push) //将包压栈
#pragma pack(1)//把本结构的单位设定成1byte
struct aa
{
 int b;
 char a;
};
#pragma pack(pop) //出栈 以后就按照编译器默认的对齐方式进行存储

 

sizeof(aa)得到的长度就是5了

 

该技术在结构对拷(memcpy),网络通讯 中传送结构时一定要注意。

 

抱歉!评论已关闭.