Adloun

Trois fautes de mémoire

Exercice · niveau 2 · informatique (MP2I/MPI), chapitre 1 — Le langage C

Énoncé

Identifier la faute dans chacun de ces trois fragments, et la nommer.


/* (a) */  int* t = malloc(10 * sizeof(int));
           t[10] = 0;

/* (b) */  int* u = malloc(10 * sizeof(int));
           free(u);
           u[0] = 1;

/* (c) */  for (int i = 0; i < 1000; i = i + 1) {
               int* v = malloc(100 * sizeof(int));
               v[0] = i;
           }

Corrigé

Les trois sont invisibles à la compilation, et les trois se détectent avec valgrind ou -fsanitize=address. La discipline qui les évite tient en une phrase : qui alloue documente qui libère.

Les autres exercices de ce chapitre Le cours du chapitre

Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.