不能用函数memcpy
来判断两个结构体是否相等:memcmp
函数是逐个字节进行比较的,而struct
存在字节对齐,字节对齐时补的字节内容是随机的,会产生垃圾值,所以无法比较。
结构体的对齐概念
结构体变量中元素是按照定义顺序一个一个放到内存中去的,但并不是紧密排列的。从结构体存储的首地址开始,每一个元素放置到内存中时,它都会认为内存是以它自己的大小来划分的,因此元素放置的位置一定会在自己宽度的整数倍上开始(以结构体变量首地址为0计算)。
结构体的补齐概念
在经过对齐原则分析后,检查计算出的存储单元是否为所有元素中所占内存最大的元素的长度的整数倍,是,则结束;若不是,则补齐为它的整数倍。
网友评论