Frage zum delete operator
-
Hi,
ich hab mal ne neugiersfrage:
wenn ich klassen, zeiger u.ä. im speicher habe dann sehe ich im task-manager wie der bedarf ansteigt, was ja auch normal ist.
jetzt rufe ich am ende der funktion aber auf alle zeiger den delete operator auf, doch trotzdem sinkt der speicherbedarf nicht um einen einzigen MB.
ich hätte es ja noch verstanden wenn er nicht auf das niveau vor der funktion gesunken wäre, dann hätte ich was vergessen, aber gar keine regung?kann es vielleicht sein das durch delete-operator der speicher gar nicht direkt frei gegeben wird, oder wie funktioniert das?
übrigens: wenn ich das programm beendet habe ist alles wieder normal.
Danke im voraus
cu Errraddicator
-
Der operator delete ist nicht dazu verpflichtet, den Heap wieder zu verkleinern, wenn du Speicher freigibst. Oft ist das auch gar nicht möglich, weil die Objekte so ungünstig verteilt sind und Objekte können nicht so ohne weiteres verschoben werden.
Das heißt aber nicht, dass dir der Speicher nicht mehr zur Verfügung steht. Wenn du tatsächlich alles deletest hast du danach im Heap wieder ordentlich Platz, ohne dass neuer Speicher vom Betriebssystem angefordert werden muss.
-
Das Betriebssystem ordnet jedem Programm eine bestimmte größe an Speicher zu, damit kann das Programm arbeiten und evtl. noch mehr anfordern, falls mehr benötigt wird.
Somit wird durch ein delete nicht gleich der Speicher indem Sinne frei, dass er im Taskmanager sichtbar wird.
Wenn Du ein Programm beendest, dann siehst Du erst, wie viel Speicher frei gegeben wird...
-
sowas in die richtung konnte ich mir schon denken, wollte mich da nur noch mal vergewissern.
danke