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

Πίνακας περιεχομένων:

Anonim

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

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

Σύνταξη για ανακατανομή σε C

ptr = realloc (ptr,newsize);

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

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

#include 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 sizestrcat(ptr, " In 'C'");printf(" %s, Address = %u\n", ptr, ptr);free(ptr);return 0;} 

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

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

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

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

Memory created successfully

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