Что такое MemoryLayout? size, stride, alignment
Суть
MemoryLayout<T> — статическая «линейка» компилятора для типа T. Три числа:
- size — сколько байт занимает само значение (без хвостового паддинга);
- alignment — по какой границе адреса должно лежать значение (адрес кратен alignment); у составного типа равен максимальному alignment его полей;
- stride — расстояние между соседними элементами в массиве:
size, округлённый вверх до кратногоalignment. Именно наstrideсдвигается указатель, когда вы идёте поUnsafeBufferPointer.
Продолжение ответа с кодом и уточняющими вопросами интервьюера — в приложении DevPrep.
Полный ответ — в DevPrep