2017-05-01 4 views
0

Ich verwende ein Objekt ostringstream in einer Anwendung, die für eine lange Zeit ausgeführt wird, um Debug-Information zu Standardausgabe zu drucken. Ich schalte um, ob die Anwendung tatsächlich das Objekt ostringstream basierend auf einem Befehlszeilenarg druckt und löscht (z. B. ausführliches Flag). Wenn der ausführliche Schalter nicht aktiviert ist, schreibe ich immer noch in das Objekt ostringstream, aber ich lösche es nie.Muss das ostringstream-Objekt gelöscht werden?

Ich versuche herauszufinden, wie schlimm das ist und ob ich mehr auf das Löschen des Objekts achten sollte? Gibt es negative Auswirkungen wie zu viel Speicher?

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

Nun, wenn Sie es nie leeren, schließlich werden Sie Ihren gesamten Speicher verbrauchen. – NathanOliver

+0

Wie sollen wir wissen, ob Sie zu viel Speicher verwenden? –

+0

Es könnte eine bessere Lösung sein, den Ausgabestrom abhängig vom Befehlszeilen-Flag einmal einzurichten und dann immer bedingungslos in diesen Stream zu schreiben. –

Antwort

1

Offensichtlich, wenn Sie Einfügen von Daten in dem Stream halten werden sie mehr Speicher, die eine Menge an einem gewissen Punkt konsumieren sein können.

Löschen wird dies verhindern.

Verwandte Themen