C++ 为什么全局结构和成员变量(相同类型)的内存集等于全局变量集?

C++ 为什么全局结构和成员变量(相同类型)的内存集等于全局变量集?,c++,memory,compare,structure,C++,Memory,Compare,Structure,我正在构建这样一个对象: TestObj::TestObj(consttypedefstruct&myStruct):m_memberStruct(myStruct){} 结构如下所示: typedef结构{short x;short y;}typedef结构。它是类TestObj的公共成员` 当我比较传递到构造函数中的全局myStruct的内存和TestObj的m\u memberStruct成员变量时,内存内容不同 PS:我正在初始化全局结构,如下所示:TestObj::typedefstr

我正在构建这样一个对象:

TestObj::TestObj(consttypedefstruct&myStruct):m_memberStruct(myStruct){}

结构如下所示:

typedef结构{short x;short y;}typedef结构。它是
类TestObj
的公共成员`

当我比较传递到构造函数中的全局
myStruct
的内存和
TestObj
m\u memberStruct
成员变量时,内存内容不同

PS:我正在初始化全局结构,如下所示:
TestObj::typedefstructmystruct={0}

我曾读到编译器有时会填充结构的元素以使每个元素大小相同,这可能会干扰全局结构的内存与它的“副本”的比较,但我认为这不适用于这里,因为它是同一类型的两元素结构


对形势有什么见解吗?如果除了检查两个元素的值之外,我无法实际比较内存,那么我仍然希望理解内存内容不同的原因。

编译器可以填充m_memberStruct,因为它是TestObj的一部分。也就是说,它可能会尝试为TestObj提供正确的对齐方式。

您确定您正在查看数据,而不是说出对象的地址吗

您可以尝试将变量初始化为易于识别的值,然后查看:

myStruct.x = 0xAA;
myStruct.y = 0xBB;

它们有何不同?你能发布这两个转储吗?请显示更多代码。似乎没有理由发生这种情况。另外,两个版本的内存内容是什么?您如何比较内存?您是否在程序中使用
memcmp
?或者您正在转储调试器中的内存?请发布一个说明您的问题的最小可编译示例程序。有关如何做到这一点以及为什么这是一个好主意的更多信息,请参阅。同时,我为您创建了一个最小程序(),它提供了正确(直观)的答案。我的最小程序与你的有什么不同?你的问题标题是一个[长]句子。请不要这样。它可以,但不会。OP在其示例程序中提供的结构不会在任何可能运行的编译器上填充。