Λειτουργία realloc() στη βιβλιοθήκη C: Πώς να χρησιμοποιήσετε; Σύνταξη & Παράδειγμα

Τι είναι το realloc();

realloc() είναι μια συνάρτηση της βιβλιοθήκης C για την προσθήκη μεγαλύτερου μεγέθους μνήμης σε ήδη εκχωρημένα μπλοκ μνήμης. Ο σκοπός του realloc στο C είναι να επεκτείνει τα τρέχοντα μπλοκ μνήμης ενώ αφήνει το αρχικό περιεχόμενο ως έχει. Η συνάρτηση realloc() βοηθά στη μείωση του μεγέθους της μνήμης που είχε εκχωρηθεί προηγουμένως από συναρτήσεις malloc ή calloc. Το realloc σημαίνει ανακατανομή μνήμης.

Σύνταξη για το realloc στο C

ptr = realloc (ptr,newsize);

Η παραπάνω δήλωση εκχωρεί έναν νέο χώρο μνήμης με καθορισμένο μέγεθος στη μεταβλητή newsize. Μετά την εκτέλεση του λειτουργία, ο δείκτης θα επιστραφεί στο πρώτο byte του μπλοκ μνήμης. Το νέο μέγεθος μπορεί να είναι μεγαλύτερο ή μικρότερο από την προηγούμενη μνήμη. Δεν μπορούμε να είμαστε σίγουροι ότι εάν το μπλοκ που εκχωρήθηκε πρόσφατα θα δείχνει στην ίδια θέση με αυτή του προηγούμενου μπλοκ μνήμης. Η συνάρτηση realloc στο C θα αντιγράψει όλα τα προηγούμενα δεδομένα στη νέα περιοχή. Διασφαλίζει ότι τα δεδομένα θα παραμείνουν ασφαλή.

Για παράδειγμα:

#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;
}

Πώς να χρησιμοποιήσετε το realloc()

Το παρακάτω πρόγραμμα στο C δείχνει πώς να χρησιμοποιήσετε το realloc στο C για να ανακατανείμετε τη μνήμη.

#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;

    }

Αποτέλεσμα της ανακατανομής στο παράδειγμα C:

Memory created successfully

Κάθε φορά που η ανακατανομή καταλήγει σε μια ανεπιτυχή λειτουργία, επιστρέφει α μηδενικός δείκτης, και τα προηγούμενα δεδομένα επίσης ελευθερώνονται.

Συνοψίστε αυτήν την ανάρτηση με: