Sunteți pe pagina 1din 3

Alocarea dinamica a memoriei

Def. Prin alocare dinamica a memoriei intelegem alocarea unor

variabile in Heap, alocare care se face in timpul executarii programului si nu de la inceput. Alocarea dinamica foloseste pointeri si variabile de tip pointer. Avantajele alocarii dinamice: utilizarea memoriei cat are nevoie in Borland C++ memoria din segmentul de date nu este intotdeauna suficienta , e limitata la 64 K, dar apeland la Heap, creste memoria disponibila.

~STIVE~
O stiva este o structura de date ce depoziteaza obiecte de un anumit tip organizata dupa principiul LIFO (Last In First Out). Operatiile de acces la stiva (push - adauga un element in stiva si pop - scoate un element din stiva) sunt create astfel incit pop scoate din stiva elementul introdus cel mai recent. O stiva este o structura liniara deschisa ale carei extremitati se numesc baza si varf si in care accesul se face la un singur capat, si anume la varful stivei. O stiva este un caz particular de lista, si anume este o lista pentru care operatiile de acces (inserare, stergere, accesare element) se efectueaza la un singur capat al listei. - o lista (un sir) in care elementele sunt adaugate si extrase la acelasi capat, in ordinea inversa introducerii (LIFO - last in, first out) -denumire inspirata din realitate (ex. o stiva de carti) Operatii pentru tipul abstract stiva: init(stiva) /* initializeaza stiva */ empty(stiva) /* testeaza daca stiva e goala */ push(stiva, element) /* pune pe stiva */ /* pop si top necesita ca precondite o stiva nevida */ pop(stiva) : element /* extrage si returneaza varful stivei */ top(stiva) : element /* returneaza varful stivei */ full(stiva) /* testeaza daca stiva e plina */ Din apelurile incuibate de functii se revine in ordine inversa fata de apel - stiva este foarte naturala pentru implementare - arhitectura procesorului: registru pentru varful stivei

- pe stiva se pun in ordine: parametrii, apoi adresa de revenire, apoi in functie se creeaza variabilele locale - variabilele locale dispar la revenirea din functie - nu e corecta returnarea adresei unei variabile locale

Modul de lucru cu stiva impune cunoasterea n permanenta a pozitiei elementului din vrful ei. In programul care implementeaza static stiva, variabila vrf reprezinta pozitia pe care se poate introduce un element (vrf-1 este pozitia ultimului element introdus), iar n varianta dinamica, vrful este adresa ultimului element introdus. Grafic, cele doua variante de implementare se pot reprezenta astfel: Variante de implementare a stivei

a) varianta statica

b) varianta dinamica

Folosind structura de date de tip stiv sa se realizeze un program care sa pstreze numarul in baza 2 si astfel s se afiseze in modul corect. #include<iostream.h> void main() { unsigned S[10], r,n; int b, v, i; cout<<"introduceti numarul in baza 10= "; cin>>n; b=-1; v=-1; while(n>0) { r=n%2; if (b==-1) b=0; v=v+1; S[v]=r; n=n/2;

} for(i=v;i>=b;i--) cout<<S[i]; }

Proiect la Informatica
Tema: Alocarea Dinamica a Memoriei