1

很多时候,每当我与人交谈时,他们都会让我从使用(在 DLL 项目中)wstring 和字符串中重生,因为它们比 wchar_t 数组消耗更多的内存。怎么样?相同L"qweqweqweqweqwe"的 wchar_t 数组是否需要比 wstring 更多的内存或不明显?new wchar_t temp现在,当我必须在 Ansi 和 Unicode(很多和delete)之间转换时,我有点困惑

4

2 回答 2

5

“许多新的 wchar_t 临时和删除”

这通常是一个非常糟糕的主意。正如 Stroustrup 所说,您通常应该依靠对象为您进行内存管理(查找 RAII)。仅在确实有必要并且仅在您的实现中深入使用时才使用原始指针。更喜欢 STL,更喜欢智能指针,使用 boost、write new 和 delete,只有当你真的需要并且关心异常安全时。否则,您将花费大部分时间调试代码。

答案是:除非您有充分的理由,否则请使用字符串类。内存使用的差异通常是微不足道的。只有在探查器告诉您时才进行优化。“过早的优化是万恶之源” (Don Knuth)。

于 2012-04-13T19:41:44.283 回答
2

在典型用法中,您不会看到string/wstring和字符数组的内存使用量有显着差异。另一方面,如果您使用字符数组,您的代码很可能充满错误和泄漏,您将花费所有时间来处理这些问题。

它被整个 C++ 社区所接受,这std::string是处理字符串的方式。任何想要使用字符数组的特立独行者都应该被迫用基准来证明他们的观点。怪胎们有责任证明他们的观点。

于 2012-04-13T18:40:15.777 回答