Mediumssostring

Что такое small string optimization (SSO)?

1Постановка

Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.

2Решение

SSO — короткие строки (до 15–22 байт) хранятся прямо внутри объекта std::string, без heap allocation. Критично, т.к. большинство строк в программах короткие.

std::string s = "hi";          // SSO: буфер внутри объекта, нет malloc
std::string big(100, 'x');     // heap allocation
// sizeof(std::string) == 32 на x64 (libstdc++)
  • libstdc++ (GCC) — SSO до 15 байт;
  • libc++ (LLVM) — до 22 байт;
  • MSVC — до 15 байт.

Аналогично работает SBO для std::function (малый callable inline) и std::any. При превышении порога — switch на heap allocation.

3Как отвечать

  • Сначала уточните условия и ограничения, покажите аналитическое мышление.
  • Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
  • Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡

На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.