Alocarea dinamica a memoriei
Nume
calloc malloc realloc - aloca memoria in mod dinamic
free - elibereaza memoria alocata in mod dinamic
Declaratie
#include <stdlib.h>
void *calloc(unsigned nel, unsigned size);
void *malloc(unsigned size);
void *realloc(void *ptr, unsigned size);
void free(void *ptr);
Descriere
Functia calloc aloca memorie pentru un tablou de nel elemente, fiecare de marime size octeti si returneaza un pointer la memoria alocata. Continutul memoriei este pus la zero.
Functia malloc aloca size octeti si returneaza un pointer la memoria alocata. Continutul memoriei nu este sters.
Functia free elibereaza spatiul de memorie indicat de ptr, care trebuie sa fi fost returnat de un apel anterior malloc calloc sau realloc. In caz contrar, sau daca a existat deja un apel anterior free(ptr), comportamentul programului este imprevizibil.
Functia realloc schimba marimea blocului de memorie indicat de ptr la size octeti. Continutul ramine neschimbat la marimea minima dintre marimea veche si cea noua; noul spatiu de memorie care este eventual alocat este neinitializat. Daca ptr este NULL apelul este echivalent cu malloc(size); daca size este egal cu zero apelul este echivalent cu free(ptr). Cu exceptia cazului cind ptr este NULL, acesta trebuie sa fi fost returnat de un apel precedent malloc calloc sau realloc
Valori returnate
Pentru calloc si malloc valoarea returnata este un pointer la memoria alocata, care este aliniata in mod corespunzator pentru orice tip de variabile, sau NULL daca nu exista suficienta memorie continua.
Functia free nu returneaza nimic.
Functia realloc returneaza un pointer la noua zona de memorie alocata, care este aliniata in mod corespunzator pentru orice tip de variabile, si poate fi diferita de ptr, sau poate fi NULL daca nu exista suficienta memorie continua sau daca valoarea size este egala cu . Daca realloc esueaza, blocul original ramine neatins - nu este nici eliberat nici mutat.
|