diff --git a/base_3.md b/base_3.md
index 5b4cf42fe61a315e41629da0ceaaff55c3e517ef..79ba40c504210444e836c2a94da1f9516917ce1f 100644
--- a/base_3.md
+++ b/base_3.md
@@ -123,6 +123,27 @@
     p[0] == *p; // rappel, le pointeur est le premier élément
     ```
 
+# Allocation dynamique de mémoire (5/N)
+
+## Pointeur de pointeur
+
+- Tout comme une valeur a une adresse, un pointeur a lui-même une adresse:
+
+    ```C
+    int a = 2;
+    int *b = &a;
+    int **c = &b;
+    ```
+- Chaque `*`{.C} ou `&`{.C} rajoute une indirection.
+- Avec `malloc()`, on peut allouer dynamiquement des tableaux de pointeurs:
+
+    ```C
+    int **p = malloc(50 * sizeof(int*));
+    for (int i = 0; i < 50; ++i) {
+        p[i] = malloc(70 * sizeof(int));
+    }
+    ```
+
 # Prototypes de fonctions (1/N)
 
 ## Principes généraux de programmation
@@ -269,3 +290,54 @@ La compilation séparée se fait en plusieurs étapes.
     ```bash
     $ gcc main.o sum.o -o prog
     ```
+
+# Préprocesseur (1/N)
+
+## Généralités
+
+- Première étape de la chaîne de compilation.
+- Géré automatiquement par `gcc` ou `clang`.
+- Lit et interprète certaines directives:
+    1. Les commentaires (`//`{.C} et `/* ... */`{.C}).
+    2. Les commandes commençant par `#`{.C}.
+- Le préprocesseur ne compile rien, mais subtitue uniquement du texte.
+
+## La directive `define`{.C}
+
+- Permet de définir un symbole:
+
+    ```C
+    #define PI 3.14159
+    #define _SUM_H_
+    ```
+- Permet de définir une macro.
+
+    ```C
+    #define NOM_MACRO(arg1, arg2, ...) [code]
+    ```
+
+# Préprocesseur (2/N)
+
+## La directive `include`{.C}
+
+- Permet d'inclure un fichier.
+- Le contenu du fichier est ajouté à l'endroit du `#include`{.C}.
+- Inclusion de fichiers "globaux" ou "locaux"
+
+    ```C
+    #include <file.h>       // LD_LIBRARY_PATH
+    #include "other_file.h" // local path
+    ```
+- Les inclusions multiples peuvent poser problème: définitions multiples. Les headers commencent par:
+
+    ```C
+    #ifndef _VAR_
+    #define _VAR_
+    /*
+    commentaires
+    */
+    #endif
+    ```
+
+
+