Цитирование из связанной статьи:
Но что это такой Align бизнес? Ну, имея дело с таким «сидящим» , «вы должны быть осторожны с проблемами выравнивания. Потому что не является переносным способом определения требований к выравниванию. Storage имеет, SmallStringOpt принимает тип, который указывает выравнивание, и хранит его в переменной dummy align_.
Я считаю, что это связано с параметром шаблона хранилища. Чтобы быть как можно более общим, класс пытается работать с любым контейнером, даже если у этого контейнера есть определенные требования к выравниванию для его элементов. Это может быть связано с соображениями производительности или может быть связано с совместимостью с определенной архитектурой. Дело в том, что нет надежного, переносимого способа определить требования к выравниванию независимо от того, что «Хранение» заканчивается.
Следовательно, параметр Align предназначен для определенного типа, размер которого равен выравниванию, требуемому Storage. Это фиктивная переменная в объединении - она никогда не записывается и не читается. используется только его размер.
Из кода видно, что размер маленькой струны является наивысшим из сконфигурированного максимума и выравниванием, что делает выравнивание минимальным настраиваемым размером маленькой строки.
Надеюсь, это поможет!
ссылка на wikipedia, ** Выравнивание данных означает перенос данных со смещением памяти, равным нескольким кратным размеру слова, что увеличивает производительность системы из-за того, как процессор обрабатывает память. ** Я думаю, что это единственная причина Вот. – stepinto