禁用 std:string 的 SSO
Disable std:string's SSO
我想知道是否有办法以编程方式禁用字符串 SSO 以使其不对短字符串使用本地缓冲区?
由于 SSO 是一项可选的优化,因此没有标准的方法可以将其关闭。
实际上,您可以 reserve
一个不适合 SSO 缓冲区的字符串来强制动态分配缓冲区:
std::string str;
str.reserve(sizeof(str) + 1);
这似乎至少适用于 gcc,甚至应该可以移植,因为内部缓冲区需要适合字符串。 (Live)
我想知道是否有办法以编程方式禁用字符串 SSO 以使其不对短字符串使用本地缓冲区?
由于 SSO 是一项可选的优化,因此没有标准的方法可以将其关闭。
实际上,您可以 reserve
一个不适合 SSO 缓冲区的字符串来强制动态分配缓冲区:
std::string str;
str.reserve(sizeof(str) + 1);
这似乎至少适用于 gcc,甚至应该可以移植,因为内部缓冲区需要适合字符串。 (Live)