禁用 std:string 的 SSO

问题描述 投票:0回答:1

我想知道是否有一种方法可以以编程方式禁用字符串SSO以使其不使用本地缓冲区来存储短字符串?

c++ string stdstring
1个回答
15
投票

由于 SSO 是一项可选优化,因此没有标准方法可以将其关闭。

实际上,您可以仅使用

reserve
一个不适合 SSO 缓冲区的字符串来强制动态分配缓冲区:

std::string str;
str.reserve(sizeof(str) + 1);

这似乎至少适用于 gcc,甚至应该可以移植,因为内部缓冲区需要适合字符串。 (直播

© www.soinside.com 2019 - 2024. All rights reserved.