Сколько байтов должен занимать объект?
Процессору удобнее (ну, инженерам было удобнее спроектировать такое), когда данные выровнены в памяти. Поэтому компилятор дополняет структуры ничего не значащими байтами (padding). Да, это перерасход оперативки, но в обмен на скорость. Память нынче дешевле скорости.
Кажется, что разность между адресами должна быть в 10 единиц
Только кажется. Ничто в стандарте этого не гарантирует.