首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >自定义堆栈上std::string数据的数量

自定义堆栈上std::string数据的数量
EN

Stack Overflow用户
提问于 2019-09-24 15:23:48
回答 2查看 87关注 0票数 2

我想增加堆栈上分配的std::string数据量。默认情况下应该是16字节,我想要更多,比如32字节。我不确定的是如何继续:默认的16字节是否是默认分配器的一部分,这样更改分配器就足够了?或者使用像boost::small_vector这样的东西会更快

EN

回答 2

Stack Overflow用户

发布于 2019-09-24 15:31:33

短串优化就是这样,一种优化。它根本不包含在标准中,这意味着它取决于各个标准库实现是否使用它,以及是否公开对它的任何控制。请查阅标准库的文档。请注意,使用它会使您的代码不可移植。

据我所知,没有任何标准库实现公开了对此功能的任何控制。

票数 3
EN

Stack Overflow用户

发布于 2019-09-24 15:37:16

这取决于您想要支持的标准。在C++11之前,分配器是无状态的。在C++11之后,提供的分配器对象的一个实例被存储在支持分配器的类中,并控制它的替换。问题是,对象本身并不存储在自动存储中,或者至少不限于这种类型的存储。

因为std::basic_string的每个实现都有不同的大小和可用区域(例如,gcc实现-只有16个字节,即15 +尾随零,clang 22字节,等等)而且您不能更改库类,要实际使用自定义单点登录,您可能必须手动提供堆栈上的存储,并围绕std::basic_string创建类适配器。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58075086

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档