Ну вот совсем не факт. Для C++ совсем-совсем не факт (там
копирующий конструктор имеет право сделать что угодно), а для C
компилятор по крайней мере не обязан и может не копировать байтики
лежащие между полей (те, что обеспечивают выравнивание следующего
поля структуры). Понятно, что для длинных структур скорей будет
тупо вызван memcpy, но для коротких запросто может скопировать
поэлементно. PS: это известный источник багов, как и то, что структуры нельзя сравнивать через memcmp, а нужно сравнивать поэлементно.