[c++]Niejasność z operatorem new[SOLVED]

0

Cześć Bracia

kasa::klasa(void)
{
   int error;
   if(!warunek_utworzenia obiektu) throw error;
}

i teraz w gdzieś w kodzie:
try
{
   klasa *k=new klasa;
}
catch(int)
{
//TODO
}

mam pytanie-czy takim wypadku,kiedy z wnętrza konstruktora zostanie rzucony wyjątek pamięć zostanie zaalokowana,czy nie?

0

Zaalokowana i od razu zwolniona.

0

A dokładniej, gdy w konstruktorze wystąpi wyjątek:

  • nie jest uruchamiany destruktor odpowiadający tej klasie i klas pochodnych
  • uruchamiane są kolejno destruktory składników klasy
  • uruchamiane są destruktory klas bazowych
  • zwalniana jest pamięć przydzielona obiektowi
0

Dzięki Bracia!Wsio jasne,jest to efekt dokładnie taki na jakim mi zależało :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1