realloc() funkcija u C biblioteci: Kako koristiti? Sintaksa i primjer
ล to je realloc()?
realloc() je funkcija C knjiลพnice za dodavanje veฤe veliฤine memorije veฤ dodijeljenim memorijskim blokovima. Svrha realloc-a u C-u je proลกiriti trenutne memorijske blokove ostavljajuฤi izvorni sadrลพaj kakav jest. funkcija realloc() pomaลพe smanjiti veliฤinu prethodno dodijeljene memorije funkcijama malloc ili calloc. realloc oznaฤava preraspodjelu memorije.
Sintaksa za realloc u C
ptr = realloc (ptr,newsize);
Gornja izjava dodjeljuje novi memorijski prostor s odreฤenom veliฤinom u varijabli newsize. Nakon izvrลกenja funkcija, pokazivaฤ ฤe se vratiti na prvi bajt memorijskog bloka. Nova veliฤina moลพe biti veฤa ili manja od prethodne memorije. Ne moลพemo biti sigurni hoฤe li novododijeljeni blok pokazivati โโna istu lokaciju kao prethodni memorijski blok. Funkcija realloc u C-u ฤe kopirati sve prethodne podatke u novo podruฤje. Osigurava da ฤe podaci ostati sigurni.
Na primjer:
#include <stdio.h>
int main () {
char *ptr;
ptr = (char *) malloc(10);
strcpy(ptr, "Programming");
printf(" %s, Address = %u\n", ptr, ptr);
ptr = (char *) realloc(ptr, 20); //ptr is reallocated with new size
strcat(ptr, " In 'C'");
printf(" %s, Address = %u\n", ptr, ptr);
free(ptr);
return 0;
}
Kako koristiti realloc()
Donji program u C-u pokazuje kako koristiti realloc u C-u za preraspodjelu memorije.
#include <stdio.h>
#include <stdlib.h>
int main() {
int i, * ptr, sum = 0;
ptr = malloc(100);
if (ptr == NULL) {
printf("Error! memory not allocated.");
exit(0);
}
ptr = realloc(ptr,500);
if(ptr != NULL)
printf("Memory created successfully\n");
return 0;
}
Rezultat reallociranja u C primjeru:
Memory created successfully
Kad god realloc rezultira neuspjeลกnom operacijom, vraฤa a nulti pointer, a oslobaฤaju se i prethodni podaci.
