1. Kann man überhaupt ein Objekt auf dem Stack erstellen?
Ich hab bisher immer new verwendet und somit den Heap genutzt.
2. Wenn du ein Objekt in der Main erstellst und du bist mit der Main durch, also das Programm wurde erfolgreich abgeschlossen, dann ist es egal weil der reservierte Speicherplatz,
egal ob Heap oder Stack, wieder freigegeben wird.
3. Speicherleks können auch auf dem Stack entstehen. Das hat was mit dem Datentyp und deren Größe zutun.
4. Ja
Auf einen Destruktor sollte man niemals verzichten, warum auch?
Solang er nicht ausgeführt wird verbraucht er keine Ressourcen. (Bsp.: siehe 2.)
Aber er ist zwingend notwendig ihn zu nutzen um reservierten Speicher während der Laufzeit wieder frei zugeben.
Du musst dir auch Vorstellen das komplexere Programme mehrere Objekte haben. Die brauchen alle Speicher und wenn man diese nicht mehr braucht kann man sie mit delete wieder löschen
um Speicher zu sparen
Das Beispiel aus der Referenz ist halt ein einfaches Bespiel zum Verständnis. In diesem Fall ist es sinnlos

Der Befehl new ruft den Konstruktor auf und reserviert Speicherplatz auf dem Heap, während delete den Destruktor aufruft und den Speicherplatz wieder frei gibt.
Das ist ein wesentlicher Bestandteil der OOP.