Объект, «выровненный по 8 байтов», сохраняется по адресу памяти, кратному 8.
Многие процессоры будут загружать только некоторые типы данных из выровненных местоположений; на других процессорах такой доступ просто быстрее. Есть также несколько других возможных причин использования выравнивания памяти - не видя код, трудно сказать, почему.
Выровненный доступ быстрее, потому что внешняя шина к памяти не имеет ширину в один байт - обычно она составляет 4 или 8 байтов (или даже шире). Это означает, что ЦП не извлекает ни одного байта за раз - он выбирает 4 или 8 байтов, начиная с запрошенного адреса. Вследствие этого 2 или 3 младших значащих бита адреса памяти фактически не отправляются ЦП - внешняя память может считываться или записываться только по адресам, кратным ширине шины. Если бы вы запросили байт по адресу «9», ЦП фактически запросил бы у памяти блок байтов, начинающийся с адреса 8, и загрузил второй в ваш регистр (отбрасывая остальные).
Это означает, что неправильный доступ может потребовать двух чтений из памяти: если вы запрашиваете 8 байтов, начиная с адреса 9, ЦП должен извлечь 8 байтов, начиная с адреса 8, а также 8 байтов начиная с адреса 16, затем замаскируйте нужные вам байты. С другой стороны, если вы запрашиваете 8 байтов, начинающихся с адреса 8, тогда требуется только одна выборка. Некоторые процессоры даже не будут выполнять такую смещенную нагрузку - они просто вызовут исключение (или даже тихо загрузят неправильные данные!).