Jak to jest z tym usuwaniem obiektów

0

Witam,
piszę tu ponieważ nie do końca rozumiem motyw usuwania obiektów i co za tym idzie zwalaniania pamieci.
Otóż jeżeli mam funkcję:

 
void foo(){
    int a = 5;
    //jakies operacje
}

to rozumiem, ze zmienna a zyje tylko do momentu wykonywania funkcji. Tzn po wykonaniu funkcji pamiec zajmowana przez zmienna a typu int jest zwalniana. Czy tak?

To teraz jesli mam funkcję:

 
void foo(){
MojaKlasa klasa = new MojaKlasa();
//jakies operacje
//delete klasa;  //-czy potrzebne?

}

to czy sytuacja wyglada tak samo? Czy po wykonaniu funkcji obiekt klasa zostanie usuniety (a pamiec zwolniona) czy konieczne jest tutaj zastosowanie 'delete'?

Podobne pytanie ze zmiennymi globalnymi:
czy jesli w programie zadeklaruje publiczna zmianna int a; oraz publiczny obiekt klsay (tworzony za pomoaca new)
to czy po wyjsci z programu (jesli klasy nie usune deletem) nadal zajmuje ona pamiec? A zmienna nie?

0

W C++ ten kod który podałeś nie zadziała. I nie nie zwolni się pamięć sama.

0

Grębosz w rękę i czytać.

0

to rozumiem, ze zmienna a zyje tylko do momentu wykonywania funkcji. Tzn po wykonaniu funkcji pamiec zajmowana przez zmienna a typu int jest zwalniana. Czy tak?

Tak.

Jeśli korzystasz z new to musisz sam usunąć pamięć za pomocą operatora delete nieważne gdzie tworzysz tą zmienną.

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