我正在构建这样一个对象:
TestObj::TestObj(const TypedefStruct& myStruct) : m_memberStruct(myStruct){}
结构如下所示:
CCD_ 2。它是CCD_ 3的公共成员
当我比较传入构造函数的全局myStruct
的内存和TestObj
的m_memberStruct
成员变量时,内存内容不同。
PS:我正在初始化全局结构,如下所示:TestObj::TypeDefStruct myStruct = {0};
我读到编译器有时会填充结构的元素,使每个元素的大小相同,这可能会干扰比较全局结构的内存和它的"副本",但我认为这不适用于这里,因为它是一个相同类型的两元素结构。。。
对情况有什么见解吗?如果除了检查两个元素的值之外,我还不能真正比较内存,我仍然想了解为什么内存内容不同。
编译器可以填充m_memberStruct,因为它是TestObj的一部分。也就是说,它可以尝试给TestObj适当的对齐。
您确定查看的是数据而不是对象的地址吗?
您可以尝试将变量初始化为易于识别的值,然后查看:
myStruct.x = 0xAA;
myStruct.y = 0xBB;