Zeiger Frage



  • Hallo,

    ich bin mir ein wenig unsicher wann ich das delete verwenden soll. Ich habe folgende Zeile:

    wxXmlProperty *prop = node->GetProperties();
    

    Muss ich jetzt diesen Zeiger, soweit ich ihn nicht mehr verwende mit

    delete prop;
    

    zerstören oder wird es nur dann gemacht wenn man:

    wxXmlProperty *prop = new wxXmlProperty;
    

    mit dem new Operator gearbeitet hat?


  • Mod

    delete muss man genau dann benutzen, wenn man new benutzt hat. Falls node-GetProperties() ein Objekt mit new angelegt haben sollte, dann muss darauf ebenfalls irgendwann ein delete ausgeführt werden. Falls nicht, auf keinen Fall delete verwenden.



  • Das kommt drauf an, was die Doku zu GetProperties sagt. Wenn sie verlangt, dass der Aufrufer die Objekte freigeben muss (wei es z.B. in der Funktion mit new erzeugt wurden), dann musst du das tun (wäre aber schlechtes Design). Ansonsten musst/darfst du es nicht (wenn nur die Adresse eines Objektes zurückgegeben wird, welches node selbstständig verwaltet).



  • Danke SeppJ! für die schnelle Aufklärung



  • ipsec schrieb:

    Das kommt drauf an, was die Doku zu GetProperties sagt. Wenn sie verlangt, dass der Aufrufer die Objekte freigeben muss (wei es z.B. in der Funktion mit new erzeugt wurden), dann musst du das tun (wäre aber schlechtes Design). Ansonsten musst/darfst du es nicht (wenn nur die Adresse eines Objektes zurückgegeben wird, welches node selbstständig verwaltet).

    Habe mir die examples bei wxWidgets schon angeschaut da war es nirgendwo drin also wird die Speicherverwaltung wohl intern betrieben. Danke!


Anmelden zum Antworten