Funzione realloc() nella libreria C: come si usa? Sintassi ed esempio
Cos'รจ realloc()?
riallocare() รจ una funzione della libreria C per aggiungere piรน dimensione di memoria ai blocchi di memoria giร allocati. Lo scopo di realloc in C รจ espandere i blocchi di memoria correnti lasciando il contenuto originale cosรฌ com'รจ. La funzione realloc() aiuta a ridurre la dimensione della memoria precedentemente allocata tramite le funzioni malloc o calloc. realloc sta per riallocazione della memoria.
Sintassi per realloc 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 il funzione, il puntatore verrร riportato al primo byte del blocco di memoria. La nuova dimensione puรฒ essere maggiore o minore della memoria precedente. Non possiamo essere sicuri che il blocco appena allocato punterร alla stessa posizione di quella del blocco di memoria precedente. La funzione realloc in C copierร tutti i dati precedenti nella nuova regione. Garantisce che i dati rimangano al sicuro.
Per esempio:
#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;
}
Come utilizzare realloc()
Il programma seguente in C dimostra come utilizzare realloc in C per riallocare la memoria.
#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;
}
Risultato del realloc nell'esempio C:
Memory created successfully
Ogni volta che realloc risulta in un'operazione non riuscita, restituisce a puntatore nulloe anche i dati precedenti vengono liberati.
