在開始之前,我需要說明我的應用程序使用了很多字符串,這些字符串平均很小,並且一旦創建就不會改變。我可以讓std :: string使用更少的內存嗎?
在Visual Studio 2010中,我注意到std :: string的容量至少爲30.即使我寫入std::string str = "test";
,str的容量也是30.函數str.shrink_to_fit()
對此沒有任何幫助,雖然函數具有相同的功能名稱存在爲std :: vector並按預期工作,即降低容量以使容量==大小。
- 爲什麼
std::string::shrink_to_fit()
不能按預期工作? - 如何確保字符串分配最少的內存?
相關:http://stackoverflow.com/questions/2916358/immutable-strings-vs-stdstring – JimmyB
你可以使用'std :: basic_string'自定義分配器。但是,這樣做會創建一個與'std :: string'不兼容的字符串類型。 – kfx
這聽起來像是一個較小的緩衝區的小緩衝區優化。如果是小緩衝區優化,那麼你不能使它更小。 –