Скорее всего, потому что, если вы возитесь с выравниванием переменных, вы либо находитесь в мире оптимизации низкого уровня (на основе оценок линии кэша и еще чего-то), либо занимаетесь программированием встраивания.
Большинство разработчиков этого не делают, и те, кто это делает, с большей вероятностью будут читать свои спецификации на пластинках и переосмысливать принципы выравнивания, которые они, вероятно, уже знают, а не обсуждают это в Интернете (есть исключения, конечно, это просто не общая тенденция).
У меня есть еще увидеть переменную alignement, которая не является дериват:
// the array "cacheline" will be aligned to 128-byte boundary
alignas(128) char cacheline[128];
С другой стороны, вам не нужно очень конкретные ситуации, чтобы увидеть влияние совокупного (структуры) выравнивание по программе.
Это то, что новичок будет писать и вопрос в какой-то момент или иначе:
#include <iostream>
struct no_align
{
char c;
double d;
int i;
};
struct align
{
double d;
int i;
char c;
};
int main(void)
{
no_align no_align_array[100];
align align_array[100];
std::cout << sizeof(no_align_array) << std::endl;
std::cout << sizeof(align_array) << std::endl;
}
На моей машине результат:
2400
1600
И это та точка, где вы будете идти вокруг в Интернете спрашивает, почему в мире одна версия заставляет вас использовать 800
больше байтов, чем другие, если ни один из преподавателей не объяснил это вам.