Gast
#4781811
Hallo ich bin interessiert an C++ und habe da als quasi Anfänger eine Frage. Was ist der Unterschied zwischen den beiden Wegen ein Objekt zu erzeugen? 1) CKlasse iklasse1; int ret = iklasse1.getIrgendwas(); und 2) CKlasse *iklasse2 = new CKlasse(); int ret = iklasse2.getIrgendwas(); Ich habe die Instanzen in einer Funktion xyz erstellt und wie es aussieht, wird bei 1) der Destruktor aufgerufen und in 2) nicht, wenn die Funktion xyz verlassen wird. Bei 2) musste ich delete(iklasse2) am Ende der Funktion xyz aufrufen damit der Destruktor von iklasse2 in 2) aufgerufen wird. Des Weiteren "vermute" ich dass Objekt iklasse1 in 1) auf dem Stack angelegt wurde und iklasse2 in 2) zur Laufzeit auf dem Heap. In einer Endlosschleife würde ich das Objekt iklasse1 immer erstellen und zerstören. Bei iklasse2 würde ich ohne das delete(iklasse2) permanent neue Objekte erstellen (Speicherleck). Ist das soweit richtig? Wann macht die "statische" Erzeugung des Objektes zur Kompilerzeit Sinn und wann die "dynamische" zur Laufzeit? Danke und Gruß