2017-05-01 136 views
0

我在長時間運行的應用程序中使用ostringstream對象來將調試信息打印到標準輸出。我切換應用程序是否實際打印並根據命令行參數(例如,詳細標誌)清除ostringstream對象。當詳細開關未被聲明時,我仍然寫入ostringstream對象,但我從不清除它。是否需要清除ostringstream對象?

我想弄清楚這是多麼糟糕,以及我是否應該更注重清理對象?是否有任何負面影響,如使用太多內存?

// example code 
ostringstream oss; 
while (1){ 
    oss << " still alive " << endl; 
    if (verbose) { cout << oss.str(); oss.str("") } 
} 
+0

好吧,如果你永遠不清空它,最終你會消耗你所有的記憶。 – NathanOliver

+0

我們應該怎麼知道你是否使用了太多的內存? –

+0

根據命令行標誌設置一次輸出流可能是一個更好的解決方案,然後總是無條件地寫入該流。 –

回答

1

顯然,當你把插入數據流中它會佔用更多的內存,這在某些時候可以有很多。

清除它將防止這種情況。