diff --git a/slides/allocation_dynamique.md b/slides/allocation_dynamique.md index 6f312aeb348f85c533e6dfcb918be75cea1fd0d2..0a1054fc7b1c3fb35f05512f6f9051ba23ba2a30 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