很多時候,當我與人交談時,他們會重新使用(在DLL項目中)wstrings和字符串,因爲它們消耗的內存比wchar_t數組多。它怎麼樣?同樣的L"qweqweqweqweqwe"
wchar_t數組比wstring需要更多的內存,或者它不明顯?現在,我當我必須ANSI和Unicode(許多new wchar_t temp
和delete
)使用wstring/wchar_t的C++
1
A
回答
2
在典型的應用之間的轉換有點困惑,你不會看到在string
/wstring
和字符數組的內存使用情況顯著差異。另一方面,如果你使用字符數組,你的代碼可能會充滿錯誤和泄漏,你會花費你所有的時間來處理這些問題。
整個C++社區都接受std::string
是處理字符串的方式。任何想要使用字符陣列的小牛都應該被迫用基準證明自己的觀點。責任應該在怪胎上以證明他們的觀點。
5
「許多新的wchar_t溫度和刪除」
這通常是一個非常糟糕的主意。正如Stroustrup所說,你通常應該依賴對象來爲你做內存管理(查看RAII)。只有使用原始指針,如果它是REALLY必要的,只有在你的實現深入。首選STL,更喜歡智能指針,使用boost,只有在真正需要並關心異常安全時才寫入新的和刪除。否則,你會花大部分時間來調試你的代碼。
答案是:除非你有一個非常好的理由,否則使用字符串類。內存使用的差異通常是微不足道的。只有在剖析器告訴你時才進行優化。 「不成熟的優化是萬惡之源」(Don Knuth)。
相關問題
- 1. 使用的C++
- 2. 使用的C++
- 3. 使用C#中的C++庫
- 4. Testand - 使用C#封裝器使用C DLL的C#DLL的使用
- 5. 使用C *在C .so庫++項目(Ubuntu的)使用C *在C項目(Ubuntu的)
- 6. 使用C或C++
- 7. 使用C的BackgroundWorker#
- 8. 的NullReferenceException使用C#
- 9. 的SelectList使用C#
- 10. 使用SqlDataReader的C#
- 11. 使用C#的SOAP#
- 12. 使用fstream的C++
- 13. C++使用ofstream的
- 14. MySQL的:使用C#
- 15. 使用C#的Microsoft.Office.Interop.Excel
- 16. 使用HIToolbox的C++
- 17. C++使用fstream的
- 18. 使用使用iphone的網絡的c/C++庫應用程序目標c
- 19. 使用C訪問Active Directory使用C
- 20. 使用C刷新Gridview使用C#
- 21. 使用C#ping服務器使用C#
- 22. 使用c導入excel使用c#
- 23. 使用C讀取輸入使用C
- 24. 使用C#異步WebRequests使用C#
- 25. 使用C#安排SSIS包使用C#
- 26. 使用C處理stdin使用C
- 27. NSLog的使用與C++中的Objective-C++
- 28. PInvoke的C#使用的DllImport在C#
- 29. 您使用的extern「C」來調用C++函數用C
- 30. 使用C#使用信用備忘錄Magento API使用C#
我很抱歉,但我不明白你的具體問題是什麼。你能明確說明你對什麼感興趣嗎? – templatetypedef 2012-04-13 18:39:19