În urma parcurgerii acestui laborator studentul va fi capabil:
Structura laboratorului se gaseste in acest link.
Funcțiile standard de alocare și eliberare a memoriei sunt declarate în biblioteca <stdlib.h>:
Alocarea memoriei
Funcția malloc are drept rezultat adresa zonei de memorie alocate (de tipul void* ) și ca argument, dimensiunea zonei de memorie alocate, exprimate în octeți. Dacă există suficient spatiu liber in HEAP, atunci un bloc de memorie continuu de dimensiunea specificată va fi marcat ca ocupat, iar funcția malloc va returna un pointer ce conține adresa deînceput a acelui bloc. Dacă nu există spațiu pentru a se face alocarea, funcția malloc întoarce NULL. Accesarea blocului alocat se realizează printr-un pointer către adresa de început a blocului.
Exemplu - malloc
char *str = malloc(10); // Aloca memorie pentru 10 de caractere int n=10; int *a = malloc(n * sizeof(int)); // Aloca memorie pentru n numere intregi
Funcția free are drept argument o adresă (un pointer) și eliberează zona de la adresa respectivă
Funcția calloc; dacă există suficient spațiu liber în HEAP, atunci un bloc de memorie continuu va fi marcat ca ocupat, iar funcția calloc va returna un pointer ce conține adresa de început a acelui bloc
Exemplu - calloc
int *v; int n = 3; v = calloc(n,sizeof(int)); // Aloca spațiu pentru n=3 întregi și îi inițializez cu 0
Funcția realloc void * realloc( void *p, int dim ); dacă există suficient spațiu în HEAP, atunci un bloc de memorie continuu cu dimensiunea dim specificată va fi marcat ca ocupat. AStfel, funcția realloc returnează un pointer ce conține adresa de început a acelui bloc. Se copiază la noua locație conținutul blocului inițial și se eliberează memoria de la vechea adresă.
O structură de date reprezintă un mod de a organiza și stoca o colecție de date; pentru a facilita manipularea elementelor din colecție este recomandată sortarea colecției. În funcție de modul în care sunt organizate elementele, se pot identifica: