Я строю объект примерно так:
TestObj::TestObj(const TypedefStruct& myStruct) : m_memberStruct(myStruct){}
Структура выглядит следующим образом:
typedef struct{ short x; short y;} TypedefStruct;
. это публичный член class TestObj
.`
Когда я сравниваю память глобального myStruct
, передаваемого в конструктор, и переменную-член m_memberStruct
, равную TestObj
, содержимое памяти отличается.
PS: я инициализирую глобальную структуру следующим образом: TestObj::TypeDefStruct myStruct = {0};
Я читал, что компиляторы иногда дополняют элементы структуры, чтобы каждый элемент имел одинаковый размер, и что это может помешать сравнению памяти глобальной структуры и ее «копии», но я не думаю, что это применимо здесь, потому что это двухэлементная структура того же типа ...
Есть понимание ситуации? Если я не могу реально сравнить память, кроме проверки значений двух элементов, я все равно хотел бы понять, почему содержимое памяти отличается.