Предположим, что у меня есть тип POD:
struct A {
char a;
int b;
};
В моей системе sizeof(A) == 8, хотя sizeof(char) == 1 и sizeof(b) == 4. Это означает, что структура данных содержит 3 неиспользуемых байта.
Предположим теперь, что
A x = ...;
A y =x;
Вопрос:
Гарантируется ли то, что все 8 байтов x и y будут идентичными, даже эти 3 неиспользуемые?
Эквивалентно, если я передаю базовые байты некоторых объектов A в другую программу, которая не понимает их значение или структуру, и рассматривает их как массив из 8 байтов, может ли эта другая программа безопасно сравнить два A для равенство?
Примечание: В эксперименте с gcc 7 кажется, что эти байты копируются. Я хотел бы знать, гарантировано ли это.