首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CString大小类

CString大小类
EN

Stack Overflow用户
提问于 2009-04-13 10:16:22
回答 2查看 3.6K关注 0票数 0

如果CString对象达到最大大小,如何增加CString的大小。或者告诉我比CString更能容纳最大数据量的函数

EN

回答 2

Stack Overflow用户

发布于 2009-04-13 11:07:46

CString对字符串缓冲区使用堆分配,因此字符串长度的实际限制取决于许多条件,大约为几百兆字节。

一般来说,每次字符串需要增加它的缓冲区时,它会分配一个比前一个更大的新缓冲区--有一个如何确定新缓冲区大小的策略。根据系统中的实际可用内存量,此重新分配可能会失败,也可能会成功。如果它失败了,你可以做的选择很少--最好的选择通常是重新启动程序。

对于您解决的任务-使用COM端口-您可以使用MFC::CArray,它非常便于用作可变大小的数组。你也可以使用std::vector来做同样的事情。

票数 1
EN

Stack Overflow用户

发布于 2009-04-13 12:26:03

在CString中,字符串实际大小和分配的缓冲区由带符号的整数保存(查看CStringData)。字符串缓冲区本身是动态分配的。这意味着理论上的限制是2^31个字符。实际上,在32位环境中,由于内存碎片,您将能够获得更少的内存。此外,如果您使用的是Unicode CString,则每个字符都是两个字节,这意味着CString缓冲区将保存较少的文本。在64位环境中,您可能能够获得多达2^31个字符。

话虽如此,您真的要尝试使用这么长的字符串吗?在达到CString长度限制之前,可能还有很多事情要做。

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

https://stackoverflow.com/questions/743523

复制
相关文章

相似问题

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