/ / So geben Sie den Speicher frei, der von einer Zeichenfolge in einer Map verwendet wird - c ++

Wie man den Speicher freigibt, der von einer Zeichenkette auf einer Karte benutzt wird - C ++

Ich habe die zwei erklärten Karten. An erster Stelle steht jeweils ein Symbol. Die Outs ordnen das Symbol einem Ofstream zu, und Message_strs ordnet das Symbol einer Zeichenfolge zu, die die für das Symbol empfangenen Nachrichten verkettet. Das Ziel ist es, so viele Nachrichten in message_strs zu speichern, dass die Anzahl der Male, die ich in die Datei schreiben muss, reduziert wird. Ich habe beide Wege ausprobiert und dieser Weg ist viel schneller. Hier sind die Deklarationen:

std::map<std::string, std::shared_ptr<std::ofstream>> outs;
std::map<std::string, std::string> message_strs;

Wenn die Länge der Zeichenfolge groß genug ist (500000), schreibe ich sie in den ofstream und lösche die Zeichenfolge folgendermaßen

*outs[symbol] << message_strs[symbol];
message_strs[symbol] = "";

Ich überwache die Speichernutzung vom Task-Manager. Ich stelle fest, dass beim Speichern der Programme der Speicher für meine Programme nicht reduziert wird. Muss ich zusätzlich zum Festlegen der Zeichenfolge in der Map nur leere Zeichenfolge festlegen, um den Speicher freizugeben?

Antworten:

0 für die Antwort № 1

Deallocations werden im Allgemeinen in der C-Laufzeit behandelt und nicht an das Betriebssystem übergeben.