heap object nullen bevor man den scope verlässt



  • Hallo sagen wir ich habe.

    foo(){
    
    Cblah blah= new Cblah;
    anderes_object->einBlahfuerDich_heb_es_gut_auf(blah);
    
    blah=NULL;
    
    }
    

    Muss ich blah auf null setzen, sodass KEIN destructor aufgerufen wird? Oder wird die Variable blah auch so in Ruhe gelassen, da sie mit new erzeugt wurde?
    Danke



  • es soll natürlich heißen (* vergessen)

    Cblah * blah = new Cblah;
    


  • der.mit.deiner.was.hat schrieb:

    Muss ich blah auf null setzen, sodass KEIN destructor aufgerufen wird? Oder wird die Variable blah auch so in Ruhe gelassen, da sie mit new erzeugt wurde?
    Danke

    Nö, anderes_objekt bekommt ohnehin nur eine Kopie des Zeigers. Und Objekte im Heap werden nie automatisch zerstört, wenn sie aus dem Scope laufen



  • Falls du solche Move-Semantik öfter benötigst, kannst du dir auch mal std::auto_ptr anschauen. Dann hast du zusätzliche Vorteile wie Exceptionsicherheit und automatische Speicherfreigabe.


Log in to reply