Kas ir realloc ()?
realloc () ir C bibliotēkas funkcija, lai pievienotu lielāku atmiņas apjomu jau piešķirtajiem atmiņas blokiem. Realloc in C mērķis ir paplašināt pašreizējos atmiņas blokus, atstājot sākotnējo saturu tādu, kāds tas ir. realloc () funkcija palīdz samazināt iepriekš piešķirtās atmiņas apjomu ar malloc vai calloc funkcijām. realloc nozīmē atmiņas pārdali.
Sintakse pārreģistrācijai C
ptr = realloc (ptr,newsize);
Iepriekš minētajā paziņojumā mainīgajā newsize tiek piešķirta jauna atmiņas telpa ar noteiktu izmēru. Pēc funkcijas izpildes rādītājs tiks atgriezts atmiņas bloka pirmajā baitā. Jaunais izmērs var būt lielāks vai mazāks par iepriekšējo atmiņu. Mēs nevaram būt pārliecināti, vai tikko piešķirtais bloks norādīs uz to pašu vietu, kur iepriekšējā atmiņas bloks. Realloc funkcija C kopēs visus iepriekšējos datus jaunajā reģionā. Tas nodrošina, ka dati paliks droši.
Piemēram:
#includeint 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;}
Kā lietot realloc ()
Zemāk esošā programma C parāda, kā izmantot realloc C, lai pārdalītu atmiņu.
#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;}
Realloc rezultāts C piemērā:
Memory created successfully
Ikreiz, kad reālloka darbība ir neveiksmīga, tas atgriež nulles rādītāju, un tiek atbrīvoti arī iepriekšējie dati.