为什么全局结构和成员变量(相同类型)的内存设置为全局不同



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

TestObj::TestObj(const TypedefStruct& myStruct) : m_memberStruct(myStruct){}

结构如下所示:

CCD_ 2。它是CCD_ 3的公共成员

当我比较传入构造函数的全局myStruct的内存和TestObjm_memberStruct成员变量时,内存内容不同。

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

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

对情况有什么见解吗?如果除了检查两个元素的值之外,我还不能真正比较内存,我仍然想了解为什么内存内容不同。

编译器可以填充m_memberStruct,因为它是TestObj的一部分。也就是说,它可以尝试给TestObj适当的对齐。

您确定查看的是数据而不是对象的地址吗?

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

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

最新更新