2012-04-13 74 views
1

很多時候,當我與人交談時,他們會重新使用(在DLL項目中)wstrings和字符串,因爲它們消耗的內存比wchar_t數組多。它怎麼樣?同樣的L"qweqweqweqweqwe" wchar_t數組比wstring需要更多的內存,或者它不明顯?現在,我當我必須ANSI和Unicode(許多new wchar_t tempdelete使用wstring/wchar_t的C++

+1

我很抱歉,但我不明白你的具體問題是什麼。你能明確說明你對什麼感興趣嗎? – templatetypedef 2012-04-13 18:39:19

回答

2

在典型的應用之間的轉換有點困惑,你不會看到在string/wstring和字符數組的內存使用情況顯著差異。另一方面,如果你使用字符數組,你的代碼可能會充滿錯誤和泄漏,你會花費你所有的時間來處理這些問題。

整個C++社區都接受std::string是處理字符串的方式。任何想要使用字符陣列的小牛都應該被迫用基準證明自己的觀點。責任應該在怪胎上以證明他們的觀點。

5

「許多新的wchar_t溫度和刪除」

這通常是一個非常糟糕的主意。正如Stroustrup所說,你通常應該依賴對象來爲你做內存管理(查看RAII)。只有使用原始指針,如果它是REALLY必要的,只有在你的實現深入。首選STL,更喜歡智能指針,使用boost,只有在真正需要並關心異常安全時才寫入新的和刪除。否則,你會花大部分時間來調試你的代碼。

答案是:除非你有一個非常好的理由,否則使用字符串類。內存使用的差異通常是微不足道的。只有在剖析器告訴你時才進行優化。 「不成熟的優化是萬惡之源」(Don Knuth)。