Skip to content
Snippets Groups Projects
Commit 929c280f authored by Pierre Kunzli's avatar Pierre Kunzli
Browse files

correction de coquilles

parent 7e8c1280
Branches pk
No related tags found
1 merge request!3correction de coquilles
Pipeline #20723 passed
......@@ -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.
![La représentation mémoire de `fraction_t` et fuites.](figs/pointer_struct_ok.svg){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
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment