Ответ
SBO — это оптимизация, при которой небольшие данные хранятся непосредственно внутри объекта (например, строки или вектора), а не в динамической памяти. Это уменьшает накладные расходы на выделение памяти и улучшает производительность для маленьких объектов.
Пример с std::string
в C++:
std::string small = "hello"; // Данные хранятся внутри объекта (SBO)
std::string large(1000, 'x'); // Данные выделяются в куче
Преимущества:
- Избегает аллокаций для маленьких данных
- Уменьшает фрагментацию памяти
- Ускоряет доступ (данные в стеке/объекте)
Недостатки:
- Увеличивает размер объекта
- Неэффективно для больших данных
SBO часто используется в строках, векторах и других контейнерах. Размер буфера обычно 15-32 байта.