首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C++中的Char *重新分配

C++中的Char *重新分配
EN

Stack Overflow用户
提问于 2010-04-29 12:30:02
回答 3查看 441关注 0票数 1

我需要在C++的"char *“中存储一定数量的数据,因为我想避免std::string在超过max_size()时耗尽内存。但是数据来自网络中的数据块,所以我每次获取数据块时都需要使用重新分配。对于C++中的字符*重新分配和连接,有什么好的解决方案吗?

EN

回答 3

Stack Overflow用户

发布于 2010-04-29 16:19:50

在visual studio中,max_size()是4294967294个字符,大约4 4Gb。如果您能告诉我们如何运行超过这么多字符的风险,那将是一件很有趣的事情。

如果问题不是经常出现,这只是为了确保故障安全,那么

代码语言:javascript
运行
复制
 myConcatStr(string str1, string str2)
 {
      if (str1.length() + str2.length()) <= str1.max_size() // if there is no overflow problem
           str1.append(str2); // use stl append
      else
           //use alternate method instead or throw an exception
 }
票数 3
EN

Stack Overflow用户

发布于 2010-04-29 12:34:17

你可以使用C语言并使用malloc() / realloc(),但是realloc()只会分配一个新的块,将旧的东西复制到新的东西中,有时也会释放旧的块。而且它也很难正确使用。

您可以只分配一个巨大的缓冲区和/或指数级增长,以抵消问题的严重性。

或者你可以使用ropes

票数 2
EN

Stack Overflow用户

发布于 2010-04-29 12:35:02

std:随着字符串大小的增长,向量会自动分配。只需随意分配一个Vector<char>和push_back()字符即可。

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

https://stackoverflow.com/questions/2734777

复制
相关文章

相似问题

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