Warum nach 'delete' zusätzlich 'NULL'?



  • volkard schrieb:

    Jester schrieb:

    @artchi:
    Wieso sollte er eine Funktion, die zZipCode heißte eine TStringList zurückgibt und keine Parameter nimmt, deklarieren?

    ich probier's mal:

    //in RVO we believe
    TStringList zZipCode();
    

    edit: ups, hab "Wie" statt "Wieso" gelesen.
    auf's "Wieso" ist die antwort "Weil man damit aufbaz der liste von der verarbeitung trennt. vermutlich zu schlimmen übergabekosten, TStringList zZipCode(ZipLib* zl,char* currentDir,char* currentDevice,char* fileName,SecurityContext* sc,char* userName,char* password,FileViewOtions* fvw);
    ok, wenn sie keine parameter nimmt, isses wohl quatsch.



  • @Volkard

    aber nimmt man den microsoftcompiler, überschreibt sein delete im debug-modus jeden gelöschen speicher geeignet (afair mit 0xcdcdcdcd).
    daran sieht man das auch genausoschnell (auch mit schutzverletzungsgarantie).

    Du predigst hier aber jetzt nicht grad fuer ne sehr von nem Hersteller abhaengige Loesung oder ....

    Allein um davon unabhaengig zu werden, wuerde ich mir die huerde von zigtausend Null zuweisungen gern aufbuerden 🙂

    Der einzige C++ like weg Imho sind smartpointer, oder die davon abgeleiteten (sinnbildlich, aggregation waer nen besserer weg), noch maechtigeren (selbstgeschriebenen) Wrapper ... !!!

    Ciao ...



  • Der einzige C++ like weg Imho sind smartpointer, oder die davon abgeleiteten (sinnbildlich, aggregation waer nen besserer weg), noch maechtigeren (selbstgeschriebenen) Wrapper ... !!!

    selbst geschriebene Wrapper? Drei Ausrufzeichen? Ich bin verwirrt.

    Ein Smart Pointer ist ja nicht eine bestimmte Klasse, die Smart Pointer Klasse, sondern einfach ein Design Prinzip, was eine Klasse beinhält, egal ob sie smart_ptr, auto_ptr, shared_ptr, scoped_ptr oder SmartPointer etc. heisst.



  • Soweit ich weiß lassen sich die Borland Klasse nur auf dem Heap anlegen. 👎



  • borland-hasser schrieb:

    Soweit ich weiß lassen sich die Borland Klasse nur auf dem Heap anlegen. 👎

    hm? wenn ich deinen satz richtig interpretiert hab, und du die vcl klassen meinst: nö, das stimmt so nicht



  • otze schrieb:

    hm? wenn ich deinen satz richtig interpretiert hab, und du die vcl klassen meinst: nö, das stimmt so nicht

    [C++ Error] Unit1.cpp(20): E2459 VCL style classes must be constructed using operator new



  • RHBaum schrieb:

    Du predigst hier aber jetzt nicht grad fuer ne sehr von nem Hersteller abhaengige Loesung oder ....

    oh, doch!
    meinetwegen mögen die nicht-ms-hörigen sich ihr globales new/delete überladen, daß es ähnliches tut. aber der anwendungscode muss einigermaßen schrottfrei bleiben.



  • Es ist ja in dem Sinne keine herstellerabhängige Lösung sondern eher eine herstellerabhängige zusätzliche Sicherheit und die auch nur im Debug-Build.



  • @ Optimizer
    Ja, haette eher schreiben sollen ... "du verleasst dich auf ein Herstellerabhaengiges, nicht genau spezifiziertes, und in den Dokus gut verstecktes Feature" 😃 Ist auch nicht wirklich ne Loesung, eher ne eigenheit. Und ja, Ich muesste wissen, das bei M$ die Begriffe "Lösung" und "Problem" meist sehr beieinander liegen 😉

    @ kingruedi
    Ja klar sind smartpointer nen Software Design 🙂
    Und je nach anwendungsfall sollt man auch unterschiedliche Smartpointer nutzen .... Wrapper sind nen noch allgemeineres Design, lassen sich aber mit Smartpointer gut combinieren ...
    Und hier gehts ja grad nur um design ....
    Was ich mein ist, fuer Arbeiten mit zeigern, also dynamisch erzeugen objekten, sind wrapper, die die Funktionen am Zeiger wrappen und sich um die verwaltung des zeigers auch noch kuemmern(intern durch smartpointer), die sauberste Sache. DIe meisten zeiger sind nie so allgemein, dass man nicht auf die idee kommen wuerd, da gleich die funktionalitaet mit durchzureichen ....
    In den meisten C++ programmen fliegen noch viel zu viel lose Zeiger rum ....

    Ciao ...



  • @RHBaum
    aus dem Grund kann man doch den -> Operator überladen, was eigentlich alle SmartPointer tun, die ich für C++ kenne. Wenn man einen WrapperSmartPointer hat, dann sorgt man IMHO nur für mehr Abhängigkeiten und wenn man irgend etwas spezielles anpassen muss, zeigt doch der Modern C++ Design SmartPointer eindeutig, wie man das wunderbar via Policies lösen kann.


Anmelden zum Antworten