Pagini: [1]   În jos
  Imprimă  
Ajutor Subiect: Eliberare memorie C++  (Citit de 1271 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
Bit_Master
Vorbaret
****

Karma: -49
Deconectat Deconectat

Mesaje: 159



Vezi Profilul
« : 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.
Memorat
popoiu.george
Vorbaret
****

Karma: 19
Deconectat Deconectat

Mesaje: 162



Vezi Profilul
« Răspunde #1 : 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.
Memorat
Pagini: [1]   În sus
  Imprimă  
 
Schimbă forumul:  

Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines