Cuprins
- 1. INTRODUCERE
- Denumirea tipului pointer
- Alocarea si eliberarea memoriei pentru pointeri
- Folosirea variabilelor referite de pointeri
- Pointerul NIL
- Atribuirea unui pointer la alt pointer
- 2. LISTE
- 2.1 Notiunea de lista
- 2.2 Liste liniare simplu înlantuite
- 2.3 Liste liniare dublu înlantuite
- 2.4 Liste circulare
- 3. Stive si cozi
- 4. Aplicatia
- Bibliografie
Extras din proiect
ALOCAREA DINAMICA A MEMORIEI
1. INTRODUCERE
Memoria RAM este împartita în locatii de memorie. Fiecare locatie memoreaza un octet (8 biti) si are o adresa exprimata în hexazecimal.
Variabilele limbajului Pascal sunt de deoua tipuri:
- Variabile statice;
- Variabile dinamice.
Variabilele statice trebuie declarate în zona ded declaratii a programului, precizând numele si tipul lor. Compilatorul limbajului Pascal rezerva automat pentru fiecare variabila statica, o zona fixa în memoria interna RAM, alcatuita din locatii succesive.
Numarul acestor locatii (octeti) depinde dee tipul variabilei:
- Doi octeti pentru integer;
- Sase octeti pentru real;
- Un octet pentru char.
Acest mod de memorare a variabilelor statice se numeste alocare statica a memoriei.
Exemplu: var x:integer;
Un alt mod de memorare a variabilelor este alocarea dinamica a memoriei, prezentata în continuare.
Se considera un numar întreg. În loc sa fie memorat numarul întrt-o variabila x de tipul integer, se va memora în x adresa de memorie a numarului respectiv. În acest caz spunem ca variabila x adreseaza un numar întreg si se numeste pointer catre un numar întreg. Pentru declararea pointerilor se foloseste operatorul ^ („sageata”).
Exemplu: var x:^integer;
Tipul de date ^integer al variabilei x se numeste „tipul pointer catre numere întregi” sau „tipul referinta catre numere întregi”.
Daca pointerul x contine adresa unui numar întreg, atunci numarul propriu-zis se va memora într-o variabila pereche atasata (creata automat), care se noteaza cu x^ si se numeste variabila dinamica.
Exemplu:
Var u:^real;
C:^char;
Denumirea tipului pointer
Tipurile de date „pointer catre real”, „pointer catre întreg” sunt anonime. Un tip pointer poate fi însa denumit, ca orice tip anonim, cu cuvântul cheie type.
Exemplu: type preal=^real;
Var x,y,z,u: preal;
Se considera un pointer x catre un numar întreg: var x:^integer;
Numarul întreg se va memora în variabila dinamica pereche x.
Alocarea si eliberarea memoriei pentru pointeri
La declararea unui pointer, compilatorul Pascal nu aloca automat spatiul de memorie necesar. Acest lucru trebuie facut de program, apelând procedura NEW care primeste ca parametru pointerul. Operatia se numeste alocare dinamica a memoriei.
Exemplu: NEW(x);
Când nu mai este nevoie de pointer, trebuie eliberata memoria care a fost alocata, pentru ca nici aceasta nu se face automat. Pentrru eliberarea memoriei se apeleaza procedura DISPOSE, care de asemenea primeste ca parametrtu pointerul.
Exemplu: DISPOSE(x);
Atât alocarea, cât si eliberarea memoriei au loc în faza de executie a programului si nu în faza de compilare.
Folosirea variabilelor referite de pointeri
Preview document
Conținut arhivă zip
- Alocare Dinamica - Turbo Pascal
- Alocare Dinamica - Turbo Pascal.doc
- LISTE.PAS