Vad är realloc ()?
realloc () är en funktion av C-biblioteket för att lägga till mer minnesstorlek till redan tilldelade minnesblock. Syftet med realloc i C är att utöka nuvarande minnesblock samtidigt som originalinnehållet blir som det är. realloc () -funktionen hjälper till att minska storleken på tidigare tilldelat minne med malloc- eller calloc-funktioner. realloc står för omallokering av minne.
Syntax för realloc i C
ptr = realloc (ptr,newsize);
Ovanstående uttalande tilldelar ett nytt minnesutrymme med en viss storlek i variabeln nyhetsstorlek. Efter att funktionen har utförts kommer pekaren att returneras till den första byten i minnesblocket. Den nya storleken kan vara större eller mindre än föregående minne. Vi kan inte vara säkra på att om det nyligen tilldelade blocket pekar på samma plats som det tidigare minnesblocket. Realloc-funktionen i C kopierar alla tidigare data i den nya regionen. Det ser till att data förblir säkra.
Till exempel:
#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;}
Hur man använder realloc ()
Nedanstående program i C visar hur man använder realloc i C för att omfördela minnet.
#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;}
Resultat av realloc i C-exempel:
Memory created successfully
Varje gång omlokaliseringen resulterar i en misslyckad operation returnerar den en nollpekare och tidigare data frigörs också.