aboutsummaryrefslogtreecommitdiff
path: root/semestre 2/informatique/4- Mémoire & algorithmique.md
diff options
context:
space:
mode:
Diffstat (limited to 'semestre 2/informatique/4- Mémoire & algorithmique.md')
-rw-r--r--semestre 2/informatique/4- Mémoire & algorithmique.md14
1 files changed, 7 insertions, 7 deletions
diff --git a/semestre 2/informatique/4- Mémoire & algorithmique.md b/semestre 2/informatique/4- Mémoire & algorithmique.md
index 8528d8b..3f61727 100644
--- a/semestre 2/informatique/4- Mémoire & algorithmique.md
+++ b/semestre 2/informatique/4- Mémoire & algorithmique.md
@@ -21,27 +21,27 @@ Pour retourné un pointeur (et donc aussi un array), on utilise le tas (heap en
**Comment mettre un tableau dans le heap ?**
On récupère la taille du tableau :
-```c
+```c title=alloc_array.c
sizeof(float)*len;
```
où `len` est la taille du tableau
Après, on récupère l'adresse dans le heap pour le mettre :
-```c
+```c title=alloc_array.c
float* ptr = (float*) malloc(size);
```
où `malloc` est dans `stdlib.h` et `size` est la taille de la variable.
`ptr` est un pointeur vers cette nouvelle valeur.
Après l'allocation, on doit vérifié que le pointeur n'est pas null :
-```c
+```c title=alloc_array.c
ptr == NULL
```
si sa valeur est null, alors la mémoire n'a pas été allouée.
Par contre, attention, la mémoire allouée par `malloc` n'est jamais supprimée avant la fin du programme !
-> on utilise `free` pour libérer la mémoire !
-```c
+```c title=alloc_array.c
free(ptr);
```
où `ptr` est un pointeur dans le heap *qui n'a pas déjà été libéré*, `free` est dans `stdlib.h`
@@ -49,14 +49,14 @@ où `ptr` est un pointeur dans le heap *qui n'a pas déjà été libéré*, `fre
> [!tip] On doit avoir autant de `malloc` que de `free`
On peut aussi initialiser toutes les valeurs à 0 avec `calloc`:
-```c
+```c title=alloc_init_array.c
float* ptr = (float*)calloc(n, sizeof(float));
```
où `n` est un entier non null et `calloc` la fonction de `stdlib.h`.
(On vérifie toujours que `ptr != NULL`.)
On peut modifier la taille allouée avec `realloc`:
-```c
+```c title=realloc_array.c
float* ptr = (float*)realloc(ptr, 10*sizeof(float));
```
où `ptr` est un pointeur et `realloc` la fonction dans `stdlib.h`
@@ -69,7 +69,7 @@ Quels sont les arguments de cette fonction ? -> `xs`, `x` et la taille de `xs`
Quels sont les sorties ? -> `i` (un int >= -1, où -1 signifie pas trouver)
Quelle méthode employer ? -> dichotomie car le tableau est trié
Comment tester la fonction ? -> avec des valeurs particulières ou en démontrant formellement la fonction
-```c
+```c title=algo.c
int found(int* arr, int n, int x){
int i = n >> 1;
while (arr[i] != x){