/ / c ++ Speicherleck und Müllspeicher - C ++, Speicherverwaltung, Speicherlecks

C ++ Speicherleck und Müll-Speicher - C ++, Speicher-Management, Speicher-Lecks

Ich kann das sehen, wenn wir Speicher dynamisch zuweisenin C ++, aber nicht richtig verwalten, können wir Müll Speicher haben, und wir können im Wesentlichen Speicherverlust erhalten, und es ist klar, warum dies passiert. Denn wenn wir zum Beispiel einen Zeiger haben, der auf eine Speicheradresse zeigt, und wir diesen Zeiger vor dem Freigeben der aktuellen Adresse einem anderen Adressraum zuweisen, ist das ein Problem. Aber was ich nicht verstehe, ist, dass wir sagen, dass wir ein schlechtes Programm haben, das immer wieder Müllspeicher hinzufügt, aber wie kommt es, dass sich alles normalisiert, wenn wir das Programm schließen? Wenn wir zum Beispiel einen Müllspeicher haben, der mit einem C ++ - Programm eingeführt wurde, so gibt es keinen Zeiger mehr, der auf diesen Müllspeicher zeigt, und wie kommt es, dass nach dem Schließen des Programms der gesamte Müllspeicher freigegeben wird? Wie kann das Programm den Müllspeicher reinigen, bevor das Programm geschlossen wird?

Antworten:

3 für die Antwort № 1

Es gibt keinen Müllspeicher, ist nicht dein Programmwelches reserviert und freigibt Speicher. Es ist das zugrunde liegende Betriebssystem. Sie arbeiten auf einem Betriebssystem und verwenden seine Dienste. Der Heapspeicher und der freie Speicher sind nur eine Abstraktion, die diese Dienste bieten (Unter anderem Abstraktionen wie Dateien, "Ich bin der einzige Prozess, der in dieser einzigartigen CPU läuft", usw.)


1 für die Antwort № 2

Unter Windows OS bereinigt das Betriebssystem den Speicher, der von einem Prozess zugewiesen wurde. Also wirft es im Grunde genommen den Raum weg, der einem Prozess gegeben wurde, ohne sich darum zu kümmern, was er enthielt.