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 подскажет развёрнутый ответ в реальном времени.