Operatii Permise Cu Variabil Dinamice
-
Upload
eugen-gavriciuc -
Category
Documents
-
view
230 -
download
0
description
Transcript of Operatii Permise Cu Variabil Dinamice
Variabila dinamica poate lua o valoare nedeterminata (0) notata prin cuvintul cheie “nil”.
Structura de date ce foloseste variabile dinamice se numeste structura dinamica de date, adica pe parcursul problemei cimpul de memorie alocat acestei structure este o marime variabila.
Aceasta ne da posibilitatea de a folosi memoriea calculatorului rational .
Pentru acest tip de variabile poate fi modificat volumul de memorie rezervat, ceea ce face mai flexibilă alocarea memoriei în procesul de lucru al programului. Structurile dinamice pot acumula elemente în procesul de funcţionare al programului, sau pot lichida elementele ce au devenit neutilizabile. Accesarea (definirea) este indirectă, prin intermediul unui tip mediator de variabile – tipul referinţă.
Pentru variabilele tip referinţă se alocă un spaţiu de memorie de 4 octeţi, care conţin adresa variabilei dinamice. Memoria pentru variabilele dinamice se alocă dintr-o zonă specială, care foloseşte adresarea indirectă, numită heap. Această zonă este diferită de zona pentru variabilele statice.
La alocarea unei variabile dinamice, este obligatoriu să păstrăm o referinţă către ea într-o variabilă de tip referinţă. Altfel, nu vom putea accesa în viitor variabila dinamică. În momentul în care nici o referinţă nu mai trimite către variabila dinamică, variabila dinamică este distrusă automat de către sistem printr-un mecanism numit colector de gunoaie.
Pentru a rezerva spaţiu pentru o variabilă dinamică este nevoie să apelăm la o expresie de alocare care foloseşte cuvântul rezervat new. Această expresie alocă spaţiul necesar pentru un anumit tip de valoare.
Variabila tip_referinţă păstrează adresa adresei variabilei dinamice. Pentru a putea utiliza variabilele dinamice în program ele trebuie iniţializate prin procedura NEW.
Schema de lucru a variabilelor referinţă:
variabilă tip referinţă (4 bytes) adresa variabilei dinamice
Exemplu:
type pointReal = ^Real;var ar, br, cr : pointReal;
variabila dinamică referităprogram
zona variabilelor statice
Memoria
zona HEAP
variabile tip referinţă adrese a variabilei dinamice ar, br, cr
Exemplu
type pointReal = ^Real;
var ar, br, cr : pointReal;
Begin
New (ar); New (br); New (cr);
Readln (ar^, br^);
cr^ := ar^+ br^;
Writeln (cr^);
End.
variabile dinamice referiteprogram
zona variabilelor statice
Memoria
ar^ br^ cr^ zona HEAP