很多时候,当我与人交谈时,他们正在重新使用(在DLL项目中)wstrings和字符串,因为它们比wchar_t数组消耗更多内存。怎么样?相同的L"qweqweqweqweqwe"
wchar_t数组是否需要比wstring更多的内存,或者它是不明显的?现在,当我必须在Ansi和Unicode之间进行转换时,我很困惑(很多new wchar_t temp
和delete
)
答案 0 :(得分:5)
“很多新的wchar_t temp和delete”
这通常是一个非常糟糕的主意。正如Stroustrup所说,你通常应该依靠对象为你做内存管理(查找RAII)。只有在需要 REALLY 时才使用原始指针,并且只在您的实现中深入。喜欢STL,喜欢智能指针,使用boost,写新和删除只有你真的需要并关心异常安全。否则,您将花费大部分时间来调试代码。
答案是:除非你有充分的理由,否则请使用字符串类。内存使用量的差异通常是微不足道的。仅在探查器告诉您时进行优化。 “过早的优化是所有邪恶的根源”(Don Knuth)。
答案 1 :(得分:2)
在典型用法中,您不会发现string
/ wstring
和字符数组的内存使用量存在显着差异。另一方面,如果您使用字符数组,您的代码可能会充满漏洞和泄漏,您将花费所有时间来处理这些错误。
整个C ++社区都接受std::string
是处理字符串的方法。任何想要使用字符数组的小牛都应该被迫用基准来证明自己的观点。责任应该在怪人身上证明他们的观点。