當我在類中創建一個std::string
成員變量時,在實例化時是否已經分配了默認內存?或std::string
推遲分配,直到它實際使用?什麼時候在初始化時發生std :: string分配
我使用Visual Studio 2010的那一刻,我注意到,當我創建一個空字符串:
std::string s0;
std::string s1 = "";
兩個有能力== 15集。那麼這是否意味着它已經分配了15個字節的內存?如果是的話,我可以防止這種情況導致沒有內存分配?
這是不同的編譯器的具體實現嗎?
請注意,觀察到的行爲中沒有任何內容表明小字符串優化正在發生。 – juanchopanza
_「如果是的話,我可以防止這種情況導致沒有內存分配嗎?」_爲什麼? –
因爲我必須緩存結構的LOTS以及診斷字符串,並且我不想通過分配更多的內存來浪費內存。另一種方法是根據需要動態分配字符串。 – Devolus