Du willst das Objekt ja zurückgeben, daher darf es natürlich nicht innerhalb der Funktion freigegeben werden (wir machen das ja nur im Fehlerfall und geben über die
Exception Rückmeldung, dass etwas schief gegangen ist). Und wie Du selbst bemerkst, ist diese Vorgehensweise daher alles andere als optimal.