Édition pédagogique en français
Mémoire dynamique en C : malloc et calloc
Allouez, redimensionnez et libérez la mémoire en vérifiant tailles et erreurs.

malloc réserve un bloc au contenu initial indéterminé. calloc réserve plusieurs éléments et met leurs octets à zéro. Ne lisez pas la mémoire de malloc avant initialisation ; des octets nuls ne garantissent pas universellement la représentation de tous les types.
Vérifiez le résultat et calculez la taille sans débordement. Avec realloc, conservez le pointeur d’origine jusqu’au succès : en cas d’échec avec une taille positive, l’ancien bloc reste valide.
Libérez chaque bloc une seule fois après usage. N’accédez plus après free ; ne libérez ni mémoire automatique ni adresse intérieure. Les programmes réels doivent traiter les échecs d’allocation.
Code source
#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;
}Ouvrir dans le compilateurQuestions fréquentes
Pourquoi le code et certains résultats restent-ils en anglais ?
Les mots-clés C, les identifiants, les commentaires du programme et les sorties attendues restent ceux de la version originale pour conserver un code exécutable et des tests cohérents. Les explications et les consignes sont traduites.