diff --git a/slides/allocation_dynamique.md b/slides/allocation_dynamique.md
index 4c732143395a168a1d3eb9a07da9212c1fea20df..ccf0102f98875b43aac2cc5583cf9df1250a07a7 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