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 № 1Deallocations werden im Allgemeinen in der C-Laufzeit behandelt und nicht an das Betriebssystem übergeben.