From 929c280f859da7ed5197f0d05cb0f03e3ab2ebc0 Mon Sep 17 00:00:00 2001 From: Pierre Kunzli <pierre.kuenzli@unige.ch> Date: Tue, 22 Nov 2022 14:37:15 +0100 Subject: [PATCH] correction de coquilles --- slides/allocation_dynamique.md | 26 ++++++-------------------- 1 file changed, 6 insertions(+), 20 deletions(-) diff --git a/slides/allocation_dynamique.md b/slides/allocation_dynamique.md index 6f312ae..0a1054f 100644 --- a/slides/allocation_dynamique.md +++ b/slides/allocation_dynamique.md @@ -25,7 +25,7 @@ date: "2022-11-22" frac->denom = -1; ``` - La zone mémoire **n'est pas** initialisée. -- Désallouer la mémoire explicitement $\Rightarrow$ **fuites mémoires**. +- Désallouer la mémoire explicitement, sinon **fuites mémoires**. - Il faut connaître la **taille** des données à allouer. {width=100%} @@ -64,8 +64,8 @@ date: "2022-11-22" ```C int *p = malloc(50 * sizeof(int)); // initialize somehow - double a = p[7]; - double b = *(p + 7); // on avance de 7 "double" + int a = p[7]; + int b = *(p + 7); // on avance de 7 "int" p[0] == *p; // le pointeur est le premier élément ``` @@ -96,7 +96,7 @@ $$ ``` - En effet, un pointeur est aussi une variable (une variable qui contient une adresse mémoire). -- Chaque `*`{.C} ou `&`{.C} rajoute une indirection. +- Chaque `*`{.C} rajoute une indirection. # Allocation dynamique de mémoire (6/7) @@ -145,14 +145,14 @@ void initialize_to(int32_t *p, size_t size, int32_t val) { ```C // alloue un tableau de taille 50 et l'initialise à -1 -int32_t *p = initialize_to(p, 50, -1); +int32_t *p = initialize_to(50, -1); free(p); // ne pas oublier ``` . . . ```C -uint32_t initialize_to(int32_t *p, size_t size, int32_t val) { +uint32_t initialize_to(size_t size, int32_t val) { int32_t *p = malloc(size * sizeof(*p)); for (size_t i = 0; i < size; ++i) { p[i] = val; @@ -222,20 +222,6 @@ p[20] = 1.3; * Mais il ne peut contenir que `50 / 4` floats (un float est composé de 32 bits). * On dépasse la capacité de la mémoire allouée: comportement indéfini. -# Questions - -## Que fait le code suivant? - -```C -float *p = malloc(50); -p[20] = 1.3; -``` - -. . . - -* On déclare un pointeur de floats de taille 50 octets. -* Mais il ne peut contenir que `50 / 4` floats (un float est composé de 32 bits). -* On dépasse la capacité de la mémoire alloué: comportement indéfini. # Questions -- GitLab