Löschen von dynamisch erstellten Arrays



  • Hi,

    wenn ich ein Array dynamisch erzeuge (und dieses dann bis zum Programmende
    besteht) macht es keinen Unterschied ob ich es am Ende lösche oder nicht!?

    Wäre das dann nur des "guten Programmierstils" wegen zu löschen?

    Grüße
    Huddi



  • huddi schrieb:

    Hi,

    wenn ich ein Array dynamisch erzeuge (und dieses dann bis zum Programmende
    besteht) macht es keinen Unterschied ob ich es am Ende lösche oder nicht!?

    Wäre das dann nur des "guten Programmierstils" wegen zu löschen?

    Grüße
    Huddi

    Vom Prinzip ist es egal. Jeglicher Processspezifischer Speicher wird freigegeben, wenn dieser beendet wird. Das war glaub ich auch schon zu Zeiten von DOS und ähnlichen Systemen so. Bei System mit virtueller Speichervrwaltung ist es grundsätzlich so.

    Es ist also nur wegen dem "Programmierstil" so.

    Aber: Dieser ist nicht nur aus Jux und Dollerei erfunden worden. Was passiert, wenn Dein Programm wirklich Speicher nicht freigibt, der aber hätte freigegeben werden müssen und du einen Memorychecker einsetzt? Du bekommst dann am Ende des Programms unter Umständen eine riesige Liste von Speicherblöcken und mußt dann für jeden Eintrag einzeln entscheiden, ob die Nichtfreigabe ein Problem ist oder nicht.
    Was passiert, wenn Deine Objekte irgenwanneinmal auch temporäre Dateien erzeugen, die auch wieder hätten gelöscht werden müssen. Der Destruktor wird nicht automatisch aufgerufen und die temporären Dateien bleiben deshalb unter umständen liegen. Gleiches mag auch für andere Ressourcen gelten, die Dein Programm belegt hat.

    Grundsätzlich gilt: Aufräumen hat noch niemanden geschadet.

    mfg Martin



  • Danke 🙂


Anmelden zum Antworten