Wann braucht man unbedingt new und delete?



  • Mit schwirrt gerade die Frage durch den Kopf, wann man new und delete braucht. Also ich versuche immer Objekte auf den Stack zu erzeugen und wenn es dynamisch mehrere sein sollen, kommen die dann doch eher in einen Container wie vector, oder?



  • Sehr korrekt festgestellt. Aber wenn du jetzt einen std::vector<..> bauen möchtest...

    Edit:
    Ein zusätzlicher Grund ist, wenn die Identität eines Objektes wichtig ist, weil sich andere Objekte darauf beziehen. Typischerweise werden dann solche Objekte unkopierbar und auch nicht verschiebbar, da sonst die Beziehung kaput gehen würde.


  • Mod

    Und wie arbeitet der Container intern?

    Es ist richtig, dass du in der Praxis recht selten new und delete brauchst, weil es bereits vieles fix und fertig gibt, wozu man new und delete sonst bräuchte. Wenn diese vorgefertigten Container nicht mehr passen und man selber etwas auf solch niedrigem Niveau programmieren will, dann braucht man new und delete. Oder genauer gesagt nimmt man besser einen allgemeinen Allokator und dessen create und destroy. Aber die grundsätzliche Benutzung ist ähnlich und hinter dem Defaultallokator steckt nach ein paar Abstraktionsschichten dann auch new/delete.


  • Mod

    kommen die dann doch eher in einen Container wie vector, oder?

    Ja, oder in einen Smart-Pointer. new braucht man dann auch nicht explizit zu schreiben (dank make_shared / make_unique ).



  • Ok, dann scheint man es doch sehr selten selbst anwenden zu müssen. Danke für die Infos.


Log in to reply