2017-05-01 4 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

明らかに、それはいくつかの点で多くのことができ、より多くのメモリを消費します。

これをクリアすると、それを防ぐことができます。

関連する問題