Cos'è realloc ()?
realloc () è una funzione della libreria C per aggiungere più dimensioni di memoria a blocchi di memoria già allocati. Lo scopo di rialloc in C è espandere i blocchi di memoria correnti lasciando il contenuto originale così com'è. La funzione realloc () aiuta a ridurre la dimensione della memoria allocata in precedenza dalle funzioni malloc o calloc. realloc sta per riallocazione della memoria.
Sintassi per rialloc in C
ptr = realloc (ptr,newsize);
L'istruzione precedente alloca un nuovo spazio di memoria con una dimensione specificata nella variabile newsize. Dopo aver eseguito la funzione, il puntatore verrà restituito al primo byte del blocco di memoria. La nuova dimensione può essere maggiore o minore della memoria precedente. Non possiamo essere sicuri che se il blocco appena allocato punterà alla stessa posizione di quello del blocco di memoria precedente. La funzione realloc in C copierà tutti i dati precedenti nella nuova regione. Si assicura che i dati rimangano al sicuro.
Per esempio:
#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;}
Come usare realloc ()
Il seguente programma in C mostra come utilizzare rialloc in C per riallocare la memoria.
#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;}
Risultato del riallocazione nell'esempio C:
Memory created successfully
Ogni volta che il rialloc risulta in un'operazione non riuscita, restituisce un puntatore nullo e vengono liberati anche i dati precedenti.