摘要:
一、什么是大端小端 little endian :将低序字节存储在起始地址 big endian :将高序字节存储在起始地址 例如,16bit宽的数0x1234在Little-endian模式CPU内存中的存放方式(假设从地址0x4000开始存放)为:内存地址0x40000x4001存放内容0x340x12 而在big-endian模式CPU内存中的存放方式则为:内存地址0x40000x4001存放内容0x120x34二、怎样判断大端小端 联合体union的存放顺序是所有成员都从低地址开始存放 void JudgeEndian(){ union{ char a;... 阅读全文
摘要:
所谓对齐,是指元素存放在内存中的起始地址偏移量(1,2,4,...)。例如,int型数据(size=4),应存放在4的倍数地址的位置上。数据对齐方便了数据的查询,因为指针的偏移有一定的规律,但是这是以占有更多的内存空间为代价的。一、struct 自然对齐 元素对齐:按照元素的size进行 整体对齐:按照结构体中size最大元素进行二、#pragma pack(num) #pragma pack() 取消对齐 元素对齐: 按照#pragma pack指定的数值和这个数据成员自身长度中,比较小的那个进行。 整体对齐: 按照结构体中最大的数据成员 和 #pragma pack指定值... 阅读全文