Предположим, что у меня есть тип 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 кажется, что эти байты копируются. Я хотел бы знать, гарантировано ли это.