Mediumalignment
Чем alignas/alignof полезны?
1Постановка
Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.
2Решение
alignas(N) задаёт требование к выравниванию переменной/типа (адрес кратен N). alignof(T) возвращает требуемое выравнивание. Важно для SIMD, atomic operations, hardware requirements и избегания false sharing.
// SIMD: SSE требует 16 байт, AVX — 32
alignas(32) float vec[8]; // безопасно для AVX-операций
// False sharing avoidance
struct PerThread {
alignas(64) int counter; // каждый поток — своя cacheline
};
static_assert(alignof(int) == 4);
static_assert(alignof(double) == 8);- На ARM/SSE unaligned access может быть crash’ем, на x86 — медленнее;
- lock-free atomic требует выравнивания по размеру;
new учитывает alignof(T) с C++17.
3Как отвечать
- Сначала уточните условия и ограничения, покажите аналитическое мышление.
- Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
- Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡
На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.