laborator 9 alocare dinamica

Post on 17-Dec-2015

7 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

sa

TRANSCRIPT

Alocarea dinamic a memoriei

Alocarea dinamic a memoriei stdlib.h : funcii standard utilizate pentru alocarea dinamic a memoriei; zona de memorie HEAP; malloc, calloc, realloc;

void * malloc ( size_t size );

void * calloc ( size_t num, size_t size );

void * realloc ( void * ptr, size_t size );

Observaie:Fiecare dintre funciile de alocare ( malloc, calloc, realloc) va returna adresa zonei de memorie alocata ( void * ). In cazul n care acesta nu poate fi alocat, atunci rezultatul alocrii este NULL.

La apelul fiecrei funcii se va utiliza:

Operatorul sizeof : determin dimensiunea necesar unui tip de date;

Operatorul de cast pentru conversia adresei primite n urma alocrii ( void * ) la tipul de date care va fi memorat la adresa respectiv.

Exemple://malloc alocarea dinamica a ununi element de tip int#include

#include

int main()

{

int *p;

p = ( int *)malloc(sizeof(int ));

if( p == NULL){

printf("Eroare la alocarea de memorie!");

return 1;

}

*p = 10;

printf("%d", *p);

free(p);

return 0;

}

//calloc

//vector alocat dinamic( cu numarul de elemente cunoscut)

#include

#include

int main()

{

int *p,n;

int i = -1;

printf("Introduceti numarul de elemente: ");

scanf("%d",&n);

p = (int*)calloc(n,sizeof(int));

if ( p == NULL){

printf("Eroare la alocarea de memorie!");

return 1;

}

printf("\nIntroduceti elementele:\n");

for(i = 0; i

top related