(erledigt) [C++] Kein delete [] bei Exception
Verfasst: 08.06.2009, 18:02
Hi,
Ich habe folgende Programmstruktur:Unter bestimmten Umständen tritt ein Fehler auf und throw "FEHLER"; schmeißt mich in den catch-Block der main() zurück. Soweit, so beabsichtigt. Das Problem ist nur: Danach wird mir ein Speicherleck angezeigt, weil das in SubFunction() allokierte Array nicht mehr freigegeben wurde.
Irre ich mich, oder sollte dem nicht so sein? delete [] müsste doch im Fall einer Exception automatisch aufgerufen werden … die Operatoren new [] und delete [] sind global überladen, das dürfte aber eigentlich nichts ausmachen – oder?
Ich habe folgende Programmstruktur:
Code: Alles auswählen
int main() {
try {
SubFunction();
return 0;
} catch(...) {
return -1;
};
}
void SubFunction() {
int * Array = new int[16];
CriticalFunction(Array);
delete [] Array;
}
void CriticalFunction(int * Array) {
if(…)
throw "FEHLER";
}
Irre ich mich, oder sollte dem nicht so sein? delete [] müsste doch im Fall einer Exception automatisch aufgerufen werden … die Operatoren new [] und delete [] sind global überladen, das dürfte aber eigentlich nichts ausmachen – oder?