Professional Documents
Culture Documents
Limbaje de Programare Laboratorul 8: Alocarea Dinamic A A Memoriei
Limbaje de Programare Laboratorul 8: Alocarea Dinamic A A Memoriei
1. Introducere
Scopul acestui laborator este lucrul cu memoria dianamică a unui program C, lucrul cu
funct, iile pentru alocarea/dealocarea memoriei s, i utilizarea memoriei alocate pentru rezolva-
rea unor probleme din laboratoarele anterioare.
Alocarea s, i de-alocarea memoriei se poate realiza ı̂n limbajul C prin intermediul a patru
funct, ii din biblioteca stdlib.h a caror headere sunt prezentate mai jos.
4 /*
5 * Aloca un bloc de memorie cu un numar de elemente (num)
6 * si mariemea in octeti a unui element (size).
7 */
8 void* calloc (unsigned in num, unsigned int size);
9
1
2. Exemple de programe
1 /* Crearea si afisarea unui vector de patrate
2 * pana la un anumit numar intreg n folosind
3 * functia malloc.
4 */
5 #include <stdio.h>
6 #include <stdlib.h>
7
8 int main(void)
9 {
10 int *pv; // pointer care va stoca
11 // adresa de iceput a memeoriei alocate
12 int i,n;
13
32 // Dealoca vectorul
33 free(pv);
34
35 return 0;
36 }
2
1 /* Crearea unui string (sir de caractere) dinamic */
2 #include <stdio.h>
3 #include <stdlib.h>
4
5 int main(){
6 char *str;
7
18 free(str);
19 return 0;
20 }
3
3. Cerint, e
Cerint, a 1 (4p) Să se scrie un program pentru ordonarea unor nume de persoane citite de
la tastură respectand următoarele cerint, e:
Cerint, a 2 (6p) Să se realizeze un program care sa inmult, easca o matrice cu un vector
respectand următoarele cerint, e:
a) Matricea va fi alocată dinmaic ca un array 1D, iar elementele acesteia se vor accesa
folosind aritmetica cu pointeri.
b) Pentru citirea matricii si respectiv a vectorului se vor creea s, i utiliza funct, iile
readMatrixFromKB(...) s, i readVectorFromKB(...) similare celor de la curs.
d) Pentru afis, area matricii s, i a vectorilor se vor creea s, i utiliza funct, iile writeMatrix(...)
s, i writeVector(...) similare celor de la curs.