Exception i klasses constructor - hvordan med allokeret memory ?
Hvis jeg har en klasse, Obj, som kan kaste en exception i constructoren, kunne jeg finde på at bruge flg. kode til at sikre at jeg har et brugbart objekt at fortsætte koden med:bool obj_ok = false ;
int data = 0 ;
while ( !obj_ok )
{
cin >> data ;
try
{
Obj ny_obj(data) ;
obj_ok = true ; // vi når kun hertil hvis der ikke kastes en exception
}
catch ( BaseExcp &ex )
{
// lav noget exception handling
}
}
Men den hukommelse, der allerede er blevet allokeret, dels til selve objektet, og dels dynamisk allokeret hukommelse constructoren allerede måtte have allokeret, før exception'en kastes - deallokeres denne hukommelse når der kastes en exception ?
Hvis ikke er der jo en potentiel memory leak i ovenstående kode. Hvordan tager man i så fald højde for det ?