Freestore vs. Heap
-
Hallo zusammen,
ich habe gerade einen Beitrag in einem anderen Thread gelesen:
Nexus schrieb:
Das ganze Objekt inklusive Member befindet sich im Freestore (dynamischer Speicher in C++). Heap wäre genau genommen dort, wo
malloc()/free()wüten, also C.Gibt es einen Grund, warum man da unterscheidet?
(Mir ist klar, dass man new/malloc und delete/free nicht mischen darf)
Sind Heap und Freestore i. d. R. wirklich komplett unterschiedliche Speicherbereiche? Ich gehe mal davon aus, dass der Standard dazu keine Vorschriften macht.
Also bisher habe ich keine Unterscheidung zwischen Freestore und Heap gemacht...Gruß,
XSpille
-
Ich würde davon ausgehen, dass es grundsätzlich dasselbe ist. Ein OS wird für C++ sicherlich keine Unterscheidung machen.
-
Ob new/delete und malloc/free unterschiedliche Mechanismen verwenden, ist im C++-Standard nicht festgelegt.
Ansonsten ist der Begriff "Heap" für den free store eigentlich überholt; free store muss nicht und wird heute auch in der Regel nicht als Heap implementiert sein. Schon der C-Standard verwendet den Begriff "Heap" nicht, allerdings auch nicht den Begriff "free store"; er kümmert sich weniger darum, wo der Kram am Ende liegt, als darum, wie lange er gültig bleibt. "Free store" taucht im C++-Standard in einer Überschrift auf, ansonsten spricht er aber auch nur von "dynamic storage duration", also dynamischer Speicherdauer.
-
XSpille schrieb:
Nexus schrieb:
Das ganze Objekt inklusive Member befindet sich im Freestore (dynamischer Speicher in C++). Heap wäre genau genommen dort, wo
malloc()/free()wüten, also C.Gibt es einen Grund, warum man da unterscheidet?
"Man" unterscheidet da überhauptnicht. Das war Nexus.