Nikolay
А зачем тогда выравнивать объекты по 8 байтов , если мы и так каждое поле равняем
Вы думаете, наверное, что поле "равняется" по абсолютному адресу. Но нет же, у упаковщика задача "разложить поля по оффсетам внутри объекта так, чтобы любой доступ к любому полю после любой аллокации любого объекта был выравнен". Нужно и оффсет выравнять, и внешним выравниванием обеспечить, чтоб внутренее выравнивание не сломалось.