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.