Edizione didattica italiana
Esempio di memoria dinamica in C
Usa malloc, calloc, realloc e free rispettando dimensioni e durata dei blocchi.

malloc riserva un blocco con contenuto iniziale indeterminato. calloc riserva più elementi e azzera i byte. Non leggere memoria malloc prima di inizializzarla; byte tutti a zero non rappresentano universalmente lo zero di ogni tipo.
Controlla il risultato e calcola la dimensione senza overflow. Con realloc conserva il puntatore originale fino al successo: se fallisce con una dimensione positiva, il vecchio blocco resta valido.
Libera ogni blocco una sola volta dopo l’uso. Non accedere dopo free e non liberare memoria automatica o indirizzi interni. I programmi reali devono gestire gli errori di allocazione.
Codice sorgente
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
size_t count = 4;
int *scores = calloc(count, sizeof *scores);
if (scores == NULL) {
fputs("Allocation failed.\n", stderr);
return 1;
}
scores[2] = 9;
for (size_t i = 0; i < count; ++i) {
printf("%d%s", scores[i], i + 1 == count ? "\n" : " ");
}
free(scores);
return 0;
}Apri nel compilatoreDomande frequenti
Perché il codice e alcuni risultati restano in inglese?
Parole chiave C, identificatori, commenti del programma e output attesi restano quelli originali per preservare codice eseguibile e test coerenti. Spiegazioni e istruzioni sono tradotte.