gpt4 book ai didi

c++ - CString 或 char 数组哪个在内存方面更好

转载 作者:太空宇宙 更新时间:2023-11-04 11:57:04 25 4
gpt4 key购买 nike

我在某处读到 CString 的使用成本很高。你能举个例子吗?同样在 CString 和 char 数组中,哪个在内存方面更好。

最佳答案

CString 除了字符数组(或宽字符)还包含字符串大小、分配的缓冲区大小和引用计数器(另外用作锁定标志)。包含字符数组的缓冲区可能比它包含的字符串大得多——它允许减少耗时的分配调用次数。此外,当 CString 设置为零大小时,它仍然包含两个 wchar 字符。

当然,当您将 CString 的大小与相应的 C 风格数组的大小进行比较时,数组会更小。但是,如果您想尽可能广泛地操作字符串,如 CString 所允许的那样,您最终将定义自己的字符串大小、缓冲区大小以及有时引用计数器和/或保护标志的变量。实际上,您需要存储字符串大小以避免每次需要时都调用 strlen。如果允许缓冲区大于字符串长度,则需要单独存储缓冲区大小,并避免在每次添加或减去字符串时调用 reallocs。依此类推——您可以用一些小尺寸的增加来换取速度、安全性和功能的显着增加。

因此,答案取决于您要对字符串执行的操作。假设您想要一个字符串来存储用于记录的类的名称——C 风格的字符串(const 和 static)就可以了。如果您需要一个字符串来操作它并将其广泛用于 MFC 或 ATL 相关类,请使用 CString 系列类型。如果您需要在应用程序的“引擎”部分中操作与其接口(interface)隔离的字符串,并且可能会转换为其他平台,请使用 std::string 或编写您自己的字符串类型以满足您的特定需求(这可以是当您编写“胶水”代码以放置在界面和引擎之间时非常有用,否则 std::string 更可取)。

关于c++ - CString 或 char 数组哪个在内存方面更好,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15780589/

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