Re: Throwing C'tor und new
- From: "Heiko Wonneberger" <hwo-news@xxxxxxxx>
- Date: Fri, 25 Jul 2008 16:52:15 +0200
Hallo Andreas,
"Andreas Heyer" <postbox@xxxxxxxxxxxxxxxxxxxxxxxxx> schrieb im Newsbeitrag
news:%23XLwqnl7IHA.4988@xxxxxxxxxxxxxxxxxxxxxxx
wie ist das Verhalten, wenn ich eine Objektinstanz per new anlegen will
und im Konstruktor des Objektes wird eine Ausnamhme geworfen? Da der C'tor
nicht vollständig abgearbeitet werden konnte, gilt das Objekt als nicht
erstellt und damit nicht existent.
Objekte hin oder her. Es geht um simplen Speicherbereich, der allokiert wird
und anschließend mit einem Konstruktor initialisiert wird. Das heißt, wenn
du im Konstruktor bist, ist der Speicher, und damit das Objekt, bereits
allokiert. Wenn du im Konstruktor etwas wirfst, und du kannst ja alles
werfen (Integers, Zeiger, ), dann bedeutet das nicht, daß dein Objekt
ungültig ist. Zum Glück gibt es keinen Compiler, der das falsch
interpretieren würde. Davon gehe ich mal aus. Zu jedem new/malloc gehört
auch ein delete/free.
Ich frage mich nun, ob das Standard-New daraufhin auch wieder den schon
geholten Speicher frei gibt? Dazu müsste es IMHO (oder wie auch immer das
implementiert wurde) um das Placement-New einen try-catch-Block bauen und
dann die Exception noch einmal werfen (re-throw).
Den try-catch mußt du selber bauen.
Aber auch wenn das Standard-New so vorgeht, steht es ja jedem frei, einen
eigenen new-Operator zu definieren. Ich frage mich jetzt aber auch, ob
sich die entsprechenden Designer des Problemes bewusst sind? Oder gibt es
da genaue Vorschriften?
Beim überschrieben new's wird wohl auch erst nach der kompletten Ausführung
deiner new-Funktion der Konstruktor ausgeführt. Das heißt, auch hier wäre
auch explizites try-catch und delete nötig, wenn im Konstruktor was geworfen
wird.
Gruß
Heiko
.
- Follow-Ups:
- Re: Throwing C'tor und new
- From: Eberhard Schefold
- Re: Throwing C'tor und new
- References:
- Throwing C'tor und new
- From: Andreas Heyer
- Throwing C'tor und new
- Prev by Date: Re: embeddedVC++ 4.0 WinCE 5.0 Emulator
- Next by Date: Re: Throwing C'tor und new
- Previous by thread: Throwing C'tor und new
- Next by thread: Re: Throwing C'tor und new
- Index(es):
Relevant Pages
|
|