Destruktoraufruf
-
bis auf ganz wenige ausnahmen ja, und bei den ausnahmen ist dein programm eh am popo

-
otze: Welche Ausnahmen?
-
abort()
-
wenn ich ein ein Objekt mit delete lösche
-
Cpt.Tanga: Wie soll denn zwischen delete und dem Destruktoraufruf abort() aufgerufen werden?
!!!!!!: Was willst du mit deinem Zitat sagen?
-
genau das was du gesagt hast :p
-
da war ich wohl ein bischen voreilig -da der destruktor sowieso noch vor dem aufruf vom eigentlichem delete operator aufgerufen wird.
ich meinte eigentlich dass das freigeben eines objektes nach aufruf des delete operators nicht 100 prozentig gesichert ist.
-
der Speicher den man für das Object bei new angelegt hat wird 100pro wieder freigegeben. Aber alle dynamischen Objekte, die das Objekt zuvor angelegt hat werden nicht automatisch gelöscht.
z.b.:class Foo { Blaa* xxxx; Foo() { xxxx = new Blaa(); } ~Foo() { } }Jetzt wird zwar der Speicher der für Foo angelegt wurde durch delete foo; gelöscht, aber der Speicher von xxxx wird nicht freigegeben.
-
nicht wenn man new und delete ueberlaed.
-
DEvent schrieb:
der Speicher den man für das Object bei new angelegt hat wird 100pro wieder freigegeben.
Nein, das ist nicht der Fall bei einer Exception im Destruktor. Siehe auch Richtlinie 11 aus Mehr Effektiv C++ programmieren.
-
Cpt.Tanga schrieb:
nicht wenn man new und delete ueberlaed.
Geht nicht. Du kannst nur operator new und operator delete überladen.
-
Optimizer schrieb:
Cpt.Tanga schrieb:
nicht wenn man new und delete ueberlaed.
Geht nicht. Du kannst nur operator new und operator delete überladen.

Michael E. schrieb:
DEvent schrieb:
der Speicher den man für das Object bei new angelegt hat wird 100pro wieder freigegeben.
Nein, das ist nicht der Fall bei einer Exception im Destruktor. Siehe auch Richtlinie 11 aus Mehr Effektiv C++ programmieren.
->
Cpt.Tanga schrieb:
da der destruktor sowieso noch vor dem aufruf vom eigentlichem delete operator aufgerufen wird
-
Cpt.Tanga schrieb:
Michael E. schrieb:
DEvent schrieb:
der Speicher den man für das Object bei new angelegt hat wird 100pro wieder freigegeben.
Nein, das ist nicht der Fall bei einer Exception im Destruktor. Siehe auch Richtlinie 11 aus Mehr Effektiv C++ programmieren.
->
Cpt.Tanga schrieb:
da der destruktor sowieso noch vor dem aufruf vom eigentlichem delete operator aufgerufen wird
Hat dein Zitat nen Sinn?
-
Michael E. schrieb:
Cpt.Tanga schrieb:
Michael E. schrieb:
DEvent schrieb:
der Speicher den man für das Object bei new angelegt hat wird 100pro wieder freigegeben.
Nein, das ist nicht der Fall bei einer Exception im Destruktor. Siehe auch Richtlinie 11 aus Mehr Effektiv C++ programmieren.
->
Cpt.Tanga schrieb:
da der destruktor sowieso noch vor dem aufruf vom eigentlichem delete operator aufgerufen wird
Hat dein Zitat nen Sinn?
ja, in so fern dass deine feststellung aus meinem zitat bereits mit ein bischen ueberlegung ersichtlich war. ich habe ja als beispiel bereits abort() genannt weswegen ich exceptions nicht weiter erwaehnte da diese auch nur darauf hinauslaufen -sofern sie nicht gefangen werden.
-
Wenns ne Ergänzung war: OK.
-
void *p = (void*)new Foo(); delete p;Undefiniert oder wird das Objekt geloescht? Der Destruktor wird auf jeden Fall nicht aufgerufen, richtig?
-
das kompiliert gar nicht
-
lol schrieb:
das kompiliert gar nicht
Meinst Du mich? Mein Compiler hats gerade geschluckt, sagt mir aber dass das delete undefiniertes Verhalten hat.