Visual c++ CString尺寸等级

Visual c++ CString尺寸等级,visual-c++,Visual C++,如果CString对象获得最大大小,如何增加CString的大小。或者告诉我可以容纳比CString更多的最大数据的函数,CString为字符串缓冲区使用堆分配,因此字符串长度的实际限制取决于许多条件,大约为数百兆字节 通常,每次字符串需要增加其缓冲区时,它都会分配一个比前一个缓冲区大的新缓冲区—有一种策略可以确定缓冲区的新大小。根据系统中可用内存的实际数量,此重新分配可能失败或成功。如果失败了,你几乎没有什么选择,你可以做什么-最好的选择通常是重新启动程序 对于您解决的任务(使用COM端口),

如果CString对象获得最大大小,如何增加CString的大小。或者告诉我可以容纳比CString更多的最大数据的函数,CString为字符串缓冲区使用堆分配,因此字符串长度的实际限制取决于许多条件,大约为数百兆字节

通常,每次字符串需要增加其缓冲区时,它都会分配一个比前一个缓冲区大的新缓冲区—有一种策略可以确定缓冲区的新大小。根据系统中可用内存的实际数量,此重新分配可能失败或成功。如果失败了,你几乎没有什么选择,你可以做什么-最好的选择通常是重新启动程序


对于您解决的任务(使用COM端口),您可以使用MFC::CArray,它非常方便地用作可变大小数组。您也可以使用std::vector进行同样的操作。

在CString中,字符串的实际大小和分配的缓冲区由带符号的int保存(签出CStringData)。字符串缓冲区本身是动态分配的。这意味着理论限制为2^31个字符。实际上,在32位环境中,由于内存碎片,您可以获得更少的内存。另外,如果使用Unicode CString,每个字符有两个字节,这意味着CString缓冲区将容纳更少的文本。在64位环境中,您最多可以获取2^31个字符


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

您遇到的实际问题是什么?那么CString的最大大小是多少?或者如何创建动态CString,以便增加CString的大小。或者如何增加CString的大小