Daten Heap
-
Hallo,
ich habe nur eine kurze Frage: Wenn ich Daten auf dem heap alloziiere und mein Programm schließe - werden dann alle daten des Heapmemory wieder freigegeben?
ist das auch auf allen betriebssystemen so?Danke
-
Also wenn du ne Variable auf dem Heap ablegst, also mit new allozierst, dann solltest du sie auch mit delete wieder löschen und den speicher freigeben.
Kannst auch intelligente Zeiger benutzen, smart pointers von der boost bibliothek;-)
Aber nach dem Programmende wird der Speicher freigegeben.Gruß freeG
-
Ja, der wird auf allen Betriebssystemen freigegeben, die ich kenne (Windows, Linux/Unix, Solaris).
Sicher mag es primitive Betriebssysteme geben, wo das nicht passiert, aber wenn du für derart exotische Systeme programmierst, wirst du über deren Eigenheiten schon Bescheid wissen.
-
fr33g schrieb:
Aber nach dem Programmende wird der Speicher freigegeben.
Nein, das ist nicht zwangsläufig so. Das Programm gibt die Speicherbereiche nicht automatisch frei und nicht jedes Betriebssystem holt sich die Speicherbereiche zurück. Es gibt Betriebssysteme die du mittels Speicherlöchern komplett lahm legen kannst.
(Das ist aber eher die Ausnahme: Die beiden verbreiteten Betriebssysteme (Windows und Unixoide) holen sich alles zurück, wenn ein Programm beendet wird)
-
ah ok...danke