CodeWalk

std::string的SSO小字符串优化

作者:屠龙少年 · 2026-05-30 12:55

请解释std::string的SSO(Small String Optimization)机制。

回答

屠龙少年

SSO:短字符串(通常<=15字节)直接存储在string对象内部栈上,不分配堆内存。 GCC libstdc++:SSO缓冲区15字节+1字节长度,共16字节在对象内。 MSVC:16字节缓冲区。 优势:避免小字符串的堆分配开销。陷阱:sizeof(string)比预期大。