gpt4 book ai didi

c++ - 我可以在 C++ 中从 const char * 数组进行零拷贝 std::string 分配吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:04:48 27 4
gpt4 key购买 nike

对我的应用程序的分析表明它在字符串分配上花费了将近 5% 的 CPU 时间。在许多很多地方,我从 64MB 字符缓冲区创建 C++ std::string 对象。问题是,缓冲区在程序运行期间永远不会改变。我对 std::string(const char *buf,size_t buflen) 调用的分析是正在复制字符串,因为缓冲区可能会在创建字符串后发生变化。那不是这里的问题。有办法解决这个问题吗?

编辑:我正在处理二进制数据,所以我不能只传递 char *s。此外,我会因始终扫描 NULL 而产生大量开销,而 std::string 避免了这种情况。

最佳答案

如果字符串不会改变并且它的生命周期保证比您要使用的字符串长,那么不要使用std::string。 .

相反,考虑一个简单的 C 字符串包装器,如提议的 string_ref<T> .

关于c++ - 我可以在 C++ 中从 const char * 数组进行零拷贝 std::string 分配吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12785666/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com