12.07.2015 Views

Programski jezik C - Pmf

Programski jezik C - Pmf

Programski jezik C - Pmf

SHOW MORE
SHOW LESS
  • No tags were found...

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

190 POGLAVLJE 11. POKAZIVAČIvoid *malloc(size t n);void *calloc(size t n, size t size);void *realloc(void *ptr, size t n);void free(void *ptr);size t je cjelobrojni tip bez predznaka definiran u , dovoljnoširok da primi vrijednost koju vraća sizeof operator.Funkcija malloc uzima jedan argument n koji predstavlja broj bajtovakoji treba alocirati i rezervira memorijski blok od n bajtova. 1 Funkcija vraćapokazivač na rezervirani blok memorije ili NULL ako zahtijev za memorijomnije mogao biti ispunjen. Vraćeni pokazivač je generički, tj. tipa void* pa gastoga prije upotrebe treba konvertirati u potrebni tip pokazivača. Tipičanprimjer upoterbe funkcije malloc je sljedeći:double *p;......p=(double *) malloc(128*sizeof(double));if(p==NULL) {printf("Greska: alokacija memorije nije uspjela!\n");exit(-1);}Uočimo da operatorom sizeof postižemo neovisnost o stvarnoj duljini varijabledouble. Ispitivanje je li pokazivač koji malloc vraća NULL pointer jenužno za ispravno funkcioniranje programa.Funkcija calloc uzima dva argumenta. Prvi je broj je broj varijabli zakoje želimo rezervirati memoriju, a drugi je broj bajtova koji svaka varijablazauzima. Funkcija vraća pokazivač na blok memorije dovoljno velik da primipolje od n objekata veličine size, ili NULL ako zahtijev za memorijom nijemogao biti ispunjen. Memorija se inicijalizira nulama tako da je svaki bitpostavi na nulu. Primjer upotrebe jeint *p;......p=(int *) calloc(128,sizeof(int));if(p==NULL){printf("Greska: alokacija memorije nije uspjela!\n");exit(-1);}1 Jedan bajt u C-u je duljina varijable char u bitovima. Najčešće iznosi uobičajenihosam bitova.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!