Anfängerfrage zum Instanzieren von Objekt
-
Hallo zusammen,
ich habe mir jetzt mehrere Bücher zum Thema C++ reingezogen - allerdings wurde mir die folgende Frage nie beantwortet:
Wenn ich eine Klasse, z. B. mit dem Namen "Auto" geschrieben habe und Objekte davon erzeugen möchte.
Instanziere ich die dann mitAuto meinAuto;
oder mit Zeiger
Auto *meinAuto = new Auto;
Wenn ich das richtig sehe, wird die erste Variante auf dem Stack erzeugt - die zweite (Zeiger-Variante) auf dem Heap.
Meine Frage:
Wann erzeuge ich ein Objekt auf dem Stack (Möglichkeit 1) und wann mit der Zeiger-Variate auf dem Heap - von was hängt das ab?
Manche Datentypen, z. B. dynamische Listen lassen sich ja nur über Zeiger (und somit auf dem Heap) realisieren.
Aber z. B. für eigene Klassen weiss ich nicht, wann ich mit welcher Variante erzeuge?cu
Chris
-
Nimm die erste Variante. Auf den Heap kommt üblicherweise alles, was viel Platz verbrät (z.B. Arrays) oder dynamisch sein muss (dynamische Arrays, deren Größe du zur Laufzeit ändern willst). Grundlos den Heap zu verwenden, ist jedenfalls schon performance-technisch keine gute Idee (der Stack ist schneller).
-
Wie hoch ist der Geschwindigkeitsunterschied zwischen Stack und Heap quantitativ?