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.

Saลพmite ovu objavu uz: