From adf393af99b80e09f8d5d8fcf9ea0d4d8cbe7b9e Mon Sep 17 00:00:00 2001
From: Orestis <orestis.malaspinas@pm.me>
Date: Mon, 21 Nov 2022 17:39:47 +0100
Subject: [PATCH] ajout fontions

---
 slides/allocation_dynamique.md | 54 +++++++++++++++++++++++++++++++++-
 1 file changed, 53 insertions(+), 1 deletion(-)

diff --git a/slides/allocation_dynamique.md b/slides/allocation_dynamique.md
index 4c73214..ccf0102 100644
--- a/slides/allocation_dynamique.md
+++ b/slides/allocation_dynamique.md
@@ -116,6 +116,58 @@ $$
 
 - Ceci est une matrice (un tableau de tableau).
 
+# Tableau dynamique en argument d'une fonction
+
+## Implémenter la fonction ci-dessous
+
+```C
+int32_t *p = malloc(50 * sizeof(*p));
+initialize_to(p, 50, -1); // initialise un tableau à -1
+free(p); // ne pas oublier
+```
+
+. . .
+
+```C
+void initialize_to(int32_t *p, size_t size, int32_t val) {
+    for (size_t i = 0; i < size; ++i) {
+        p[i] = val;
+    }
+}
+```
+
+
+# Tableau dynamique retourné d'une fonction
+
+## Implémenter la fonction ci-dessous
+
+```C
+// alloue un tableau de taille 50 et l'initilise à -1
+int32_t *p = initialize_to(p, 50, -1); 
+free(p); // ne pas oublier
+```
+
+. . .
+
+```C
+uint32_t initialize_to(int32_t *p, size_t size, int32_t val) {
+    int32_t *p = malloc(size * sizeof(*p));
+    for (size_t i = 0; i < size; ++i) {
+        p[i] = val;
+    }
+    return p;
+}
+```
+
+## Pourquoi on peut retourner un tableau dynamique et pas un statique?
+
+. . .
+
+* Le tableau est alloué sur le **tas** et non sur la **pile**. 
+* La mémoire est gérée manuellement sur le tas, automatiquement sur la pile.
+
+
+
 # Les *sanitizers*
 
 Problèmes mémoire courants:
@@ -130,7 +182,7 @@ Outils pour leur détection:
 * Valgrind (outil externe).
 * Sanitizers (ajouts de marqueurs à la compilation).
 
-Ici on utilise les sanitizers (modification de la ligne de compilation):
+Ici on utilise les sanitizers (modification de la ligne de compilation, modifiez les *Makefile*):
 
 ```bash
 gcc -o main main.c -g -fsanitize=address -fsanitize=leak
-- 
GitLab