Titlul: Eliberare memorie C++ Scris de: Alexandru-Iancu Caragicu din Martie 06, 2011, 16:30:15 Daca stochezi vectori intr-o functie recursiva (e necesar la o problema), memoria aceea se elibereaza dupa ce termina executia acea instanta a functiei?
Mai mult, daca s-a terminat de evaluat o linie de cod in care s-a folosit parametrul intors de functie, si s-a zicem functia intorcea adresa unui vector, vectorul se elibereaza? Ca eu stiam ca C++ nu are garbage collector si ma gandeam daca asa obtii memory leaks. Titlul: Răspuns: Eliberare memorie C++ Scris de: George Popoiu din Martie 06, 2011, 19:30:12 Recursivitatea (functiile) lucreaza cu zona de memorie numita stiva. Ce trebuie sa stii e ca la fiecare auto apel al functiei nivelul stivei creste si pe noul nivel se aloca toate variabilele locale ale functiei (vectori, etc) si parametrii de apel. Cand rularea s-a terminat si se revine din recursivitate, se dezaloca tot de pe nivelul curent.
Ideea e ca daca ai o functie recursiva foarte "adanca", adica care se auto apeleaza de multe ori, si aloci in acea functie vectori risti sa depasesti repede memoria disponibila pentru stiva, care e in general si mult mai mica decat memoria HEAP disponibila. |