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?
DankeNö, 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.