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

correction de coquilles

parent 7e8c1280
No related branches found
No related tags found
No related merge requests found
......@@ -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