diff --git a/20190107/bsort-1a.c b/20190107/bsort-1a.c
new file mode 100644
index 0000000000000000000000000000000000000000..348b638843002926f57cdcf1d4fbc9bd88d2a10c
--- /dev/null
+++ b/20190107/bsort-1a.c
@@ -0,0 +1,48 @@
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+
+int comparisons = 0;
+
+void display (char **name, int left, int right)
+{
+  printf ("\e[H\e[J");
+  for (int i = 0; name[i]; i++)
+    {
+      printf ("%s", name[i]);
+      if (i == left || i == right)
+        printf (" <--");
+      printf ("\n");
+    }
+  printf ("%d\n", comparisons);
+}
+
+int compare (char **name, int left, int right)
+{
+  int result = strcmp (name[left], name[right]);
+  comparisons++;
+  display (name, left, right);
+  usleep (200000);
+  return result;
+}
+
+void sort (char **name)
+{
+  for (int i = 1; name[i]; i++)
+    if (compare (name, i - 1, i) > 0)
+      {
+        char *temp = name[i - 1];
+        name[i - 1] = name[i];
+        name[i] = temp;
+      }
+}
+
+int main (void)
+{
+  char *name[] = { "Otto", "Lisa", "Anna", "Heinrich", "Siegfried", "Peter",
+                   "Dieter", "Hugo", "Zacharias", "Berta", "Maria", "Fritz", "Box", "Hans",
+                   "Thomas", "Ulrich", NULL };
+  sort (name);
+  display (name, -1, -1);
+  return 0;
+}
diff --git a/20190107/dynmem-1.c b/20190107/dynmem-1.c
new file mode 100644
index 0000000000000000000000000000000000000000..559684f073676ef87cb01f155e9b3bad86416224
--- /dev/null
+++ b/20190107/dynmem-1.c
@@ -0,0 +1,13 @@
+#include <stdio.h>
+
+int main (void)
+{
+  char **name = malloc (3 * sizeof (char *));
+  name[0] = "Anton";
+  name[1] = "Berthold";
+  name[2] = "Caesar";
+  for (int i = 0; i < 3; i++)
+    printf ("%s\n", name[i]);
+  free (name);
+  return 0;
+}
diff --git a/20190107/dynmem-2.c b/20190107/dynmem-2.c
new file mode 100644
index 0000000000000000000000000000000000000000..56148108873fc8dae9bdb7f8b555a4172883c6ad
--- /dev/null
+++ b/20190107/dynmem-2.c
@@ -0,0 +1,14 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+int main (void)
+{
+  char **name = malloc (3 * sizeof (char *));
+  name[0] = "Anton";
+  name[1] = "Berthold";
+  name[2] = "Caesar";
+  for (int i = 0; i < 3; i++)
+    printf ("%s\n", name[i]);
+  free (name);
+  return 0;
+}
diff --git a/20190107/dynmem-3.c b/20190107/dynmem-3.c
new file mode 100644
index 0000000000000000000000000000000000000000..f78a21ec7a8285f4c3fc41e3b549dd333e11c22e
--- /dev/null
+++ b/20190107/dynmem-3.c
@@ -0,0 +1,22 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+int main (void)
+{
+  char **name = malloc (3 * sizeof (char *));
+  name[0] = "Anton";
+  name[1] = "Berthold";
+  name[2] = "Caesar";
+
+  char **new_name = malloc (4 * sizeof (char*));
+  for (int i = 0; i < 3; i++)
+    new_name[i] = name[i];
+  name = new_name;   /* Speicherleck: Array wurde nicht freigegeben! */
+
+  name[3] = "Dieter";
+
+  for (int i = 0; i < 4; i++)
+    printf ("%s\n", name[i]);
+  free (name);
+  return 0;
+}
diff --git a/20190107/dynmem-4.c b/20190107/dynmem-4.c
new file mode 100644
index 0000000000000000000000000000000000000000..0db6dd4f7f67d8d4db8ce8264a0ba533082da721
--- /dev/null
+++ b/20190107/dynmem-4.c
@@ -0,0 +1,23 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+int main (void)
+{
+  char **name = malloc (3 * sizeof (char *));
+  name[0] = "Anton";
+  name[1] = "Berthold";
+  name[2] = "Caesar";
+
+  char **new_name = malloc (4 * sizeof (char*));
+  for (int i = 0; i < 3; i++)
+    new_name[i] = name[i];
+  free (name);
+  name = new_name;   /* kein Speicherleck: Array wurde freigegeben. */
+
+  name[3] = "Dieter";
+
+  for (int i = 0; i < 4; i++)
+    printf ("%s\n", name[i]);
+  free (name);
+  return 0;
+}
diff --git a/20190107/dynmem-5.c b/20190107/dynmem-5.c
new file mode 100644
index 0000000000000000000000000000000000000000..d1ebf99fd76b60aa3bcf97ebc2eb7b76c1a583a9
--- /dev/null
+++ b/20190107/dynmem-5.c
@@ -0,0 +1,24 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+int main (void)
+{
+  char **name = malloc (3 * sizeof (char *));
+  name[0] = "Anton";
+  name[1] = "Berthold";
+  name[2] = "Caesar";
+
+  char **new_name = malloc (4 * sizeof (char*));
+  for (int i = 0; i < 3; i++)
+    new_name[i] = name[i];
+  free (name);
+  name = new_name;
+
+  name[3] = "Dieter";
+
+  for (int i = 0; i < 4; i++)
+    printf ("%s\n", name[i]);
+  free (name);
+  free (new_name);   /* Fehler: Array wurde bereits freigegeben! */
+  return 0;
+}
diff --git a/20190107/dynmem-6.c b/20190107/dynmem-6.c
new file mode 100644
index 0000000000000000000000000000000000000000..c8a5807d1172df17419fa05efffcb643b8e75ba7
--- /dev/null
+++ b/20190107/dynmem-6.c
@@ -0,0 +1,24 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+int main (void)
+{
+  char **name = malloc (3 * sizeof (char *));
+  name[0] = "Anton";
+  name[1] = "Berthold";
+  name[2] = "Caesar";
+
+  char **new_name = malloc (4 * sizeof (char*));
+  for (int i = 0; i < 3; i++)
+    new_name[i] = name[i];
+  free (name);
+  name = new_name;
+  new_name = NULL;   /* Zeiger wird nicht mehr gebraucht. */
+
+  name[3] = "Dieter";
+
+  for (int i = 0; i < 4; i++)
+    printf ("%s\n", name[i]);
+  free (name);
+  return 0;
+}
diff --git a/20190107/dynmem-7.c b/20190107/dynmem-7.c
new file mode 100644
index 0000000000000000000000000000000000000000..b80cd7fa18551d2046a2aa77e7f4d1bc74157f0b
--- /dev/null
+++ b/20190107/dynmem-7.c
@@ -0,0 +1,16 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+int main (void)
+{
+  char **name = malloc (3 * sizeof (char *));
+  name[0] = "Anton";
+  name[1] = "Berthold";
+  name[2] = "Caesar";
+  name = realloc (name, 4 * sizeof (char));
+  name[3] = "Dieter";        /* Fehler: ^ "*" vergessen; zu wenig Speicher */
+  for (int i = 0; i < 4; i++)
+    printf ("%s\n", name[i]);
+  free (name);
+  return 0;
+}
diff --git a/20190107/dynmem-8.c b/20190107/dynmem-8.c
new file mode 100644
index 0000000000000000000000000000000000000000..414a24a14321085196c5c2887f3c7d90e7c81e01
--- /dev/null
+++ b/20190107/dynmem-8.c
@@ -0,0 +1,16 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+int main (void)
+{
+  char **name = malloc (3 * sizeof (char *));
+  name[0] = "Anton";
+  name[1] = "Berthold";
+  name[2] = "Caesar";
+  name = realloc (name, 4 * sizeof (char *));
+  name[3] = "Dieter";
+  for (int i = 0; i < 4; i++)
+    printf ("%s\n", name[i]);
+  free (name);
+  return 0;
+}
diff --git a/20190107/hp-20190107.pdf b/20190107/hp-20190107.pdf
index f29469844093a266764aadca67e69ca9a0bc9e4c..b9e31a23b0cce026d770e7ca5871226880ce9139 100644
Binary files a/20190107/hp-20190107.pdf and b/20190107/hp-20190107.pdf differ
diff --git a/20190107/hp-20190107.tex b/20190107/hp-20190107.tex
index e87ff48825c5bfa9fd24eced460d36b2968eec9f..6ef2485f0245e868064ce5898e78642d41976e64 100644
--- a/20190107/hp-20190107.tex
+++ b/20190107/hp-20190107.tex
@@ -20,7 +20,7 @@
 % Attribution-ShareAlike 3.0 Unported License along with this
 % document.  If not, see <http://creativecommons.org/licenses/>.
 
-% README: Aufwandsabschätzungen, objektorientierte Programmierung in C
+% README: Aufwandsabschätzungen, dynamische Speicherverwaltung
 
 \documentclass[10pt,t]{beamer}
 
@@ -63,6 +63,7 @@
         \item[5.1] Differentialgleichungen
         \color{medgreen}
         \item[5.2] Rekursion
+        \color{orange}
         \item[5.3] Aufwandsabschätzungen
       \end{itemize}
     \item[\textbf{6}] \textbf{Objektorientierte Programmierung}
@@ -70,6 +71,7 @@
         \color{red}
         \item[6.0] Dynamische Speicherverwaltung
         \item[6.1] Konzepte und Ziele
+        \color{black}
         \item[6.2] Beispiel: Zahlen und Buchstaben
         \item[6.3] Beispiel: Graphische Benutzeroberfläche (GUI)
         \vspace*{-\smallskipamount}
@@ -303,6 +305,7 @@
         \color{red}
         \item[6.0] Dynamische Speicherverwaltung
         \item[6.1] Konzepte und Ziele
+        \color{black}
         \item[6.2] Beispiel: Zahlen und Buchstaben
         \item[6.3] Beispiel: Graphische Benutzeroberfläche (GUI)
         \vspace*{-\smallskipamount}
@@ -424,6 +427,8 @@
 
 \end{frame}
 
+\iffalse
+
 \begin{frame}
 
   \showsection
@@ -554,8 +559,6 @@
   
 \end{frame}
 
-\iffalse
-
 \begin{frame}[fragile]
   \begin{center}
     \begin{minipage}{5cm}
@@ -602,8 +605,6 @@
   
 \end{frame}
 
-\fi
-
 \subsection{Beispiel: Graphische Benutzeroberfläche (GUI)}
 
 \begin{frame}[fragile]
@@ -646,8 +647,6 @@
   
 \end{frame}
 
-\iffalse
-
 \subsection{Unions}
 
 \begin{frame}[fragile]
@@ -809,10 +808,11 @@
       \begin{itemize}
         \color{medgreen}
         \item[6.0] Dynamische Speicherverwaltung
+        \color{orange}
         \item[6.1] Konzepte und Ziele
+        \color{red}
         \item[6.2] Beispiel: Zahlen und Buchstaben
         \item[6.3] Beispiel: Graphische Benutzeroberfläche (GUI)
-        \color{red}
         \item[6.4] Unions
         \item[6.5] Virtuelle Methoden
         \item[6.6] Einführung in C++
diff --git a/20190107/hp-uebung-20190107.pdf b/20190107/hp-uebung-20190107.pdf
index 8a8113c575bdd50d401ef174ac8a2ed76ae94ad0..cedea8fd7babfe068fbe3ce2dbbf79db97592179 100644
Binary files a/20190107/hp-uebung-20190107.pdf and b/20190107/hp-uebung-20190107.pdf differ
diff --git a/20190107/hp-uebung-20190107.tex b/20190107/hp-uebung-20190107.tex
index d4299df321b1ba4b6e43c2ee9361aa310db907d9..ddad3e0fc05d2e3da4880c23978c7ef243c1b67d 100644
--- a/20190107/hp-uebung-20190107.tex
+++ b/20190107/hp-uebung-20190107.tex
@@ -20,7 +20,7 @@
 % Attribution-ShareAlike 3.0 Unported License along with this
 % document.  If not, see <http://creativecommons.org/licenses/>.
 
-% README: Speicherformate von Zahlen, Zeigerarithmetik, objektorientierte Tier-Datenbank
+% README: Speicherformate von Zahlen, Zeigerarithmetik
 
 \documentclass[a4paper]{article}
 
@@ -34,9 +34,9 @@
             Übungsaufgaben -- 7.\ Januar 2019}
 
   Diese Übung enthält Punkteangaben wie in einer Klausur.
-  Um zu "`bestehen"', müssen Sie innerhalb von 100 Minuten
+  Um zu "`bestehen"', müssen Sie innerhalb von 60 Minuten
   unter Verwendung ausschließlich zugelassener Hilfsmittel
-  18 Punkte (von insgesamt \totalpoints) erreichen.
+  11 Punkte (von insgesamt \totalpoints) erreichen.
 
   \exercise{Speicherformate von Zahlen}
 
@@ -190,6 +190,8 @@
       \points{4}
   \end{enumerate}
 
+\iffalse
+
   \clearpage
 
   \exercise{Objektorientierte Tier-Datenbank}
@@ -295,6 +297,8 @@
       \points{4}
   \end{itemize}
 
+\fi
+
   \bigskip
   \begin{flushright}
     \textit{Viel Erfolg!}
diff --git a/20190107/photo-20190107-173418.jpg b/20190107/photo-20190107-173418.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..1f8143757dadbedf1ab4f0cbd7af41192b387f1b
Binary files /dev/null and b/20190107/photo-20190107-173418.jpg differ
diff --git a/20190107/photo-20190107-173418.txt b/20190107/photo-20190107-173418.txt
new file mode 100644
index 0000000000000000000000000000000000000000..98711a57c52b1e97933d5f8274cad51bc0f5db1e
--- /dev/null
+++ b/20190107/photo-20190107-173418.txt
@@ -0,0 +1 @@
+README: Quicksort
diff --git a/README.md b/README.md
index 4fb108d2536764dc20401f38e0e77230226f06ba..67288428dd6efdb4e3a36d2fdf9998dbc8da4235 100644
--- a/README.md
+++ b/README.md
@@ -28,7 +28,7 @@ Vortragsfolien:
  * [03.12.2018: Bit-Operationen, Programmierung von Mikrocontrollern, I/O-Ports, Interrupts](https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/20181203/hp-20181203.pdf)
  * [10.12.2018: volatile-Variable, Byte-Reihenfolge - Endianness, Binärdarstellung negativer Zahlen, Speicherausrichtung - Alignment](https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/20181210/hp-20181210.pdf)
  * [17.12.2018: Rekursion, Aufwandsabschätzungen](https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/20181217/hp-20181217.pdf)
- * [07.01.2019: Aufwandsabschätzungen, objektorientierte Programmierung in C](https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/20190107/hp-20190107.pdf)
+ * [07.01.2019: Aufwandsabschätzungen, dynamische Speicherverwaltung](https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/20190107/hp-20190107.pdf)
  * [alle in 1 Datei](https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/hp-slides-2018ws.pdf)
 
 Übungsaufgaben:
@@ -44,7 +44,7 @@ Vortragsfolien:
  * [03.12.2018: XBM-Grafik, LED-Blinkmuster](https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/20181203/hp-uebung-20181203.pdf)
  * [10.12.2018: Trickprogrammierung, Thermometer-Baustein an I²C-Bus](https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/20181210/hp-uebung-20181210.pdf)
  * [17.12.2018: Fakultät, Lauflicht, Länge von Strings (Neuauflage)](https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/20181217/hp-uebung-20181217.pdf)
- * [07.01.2019: Speicherformate von Zahlen, Zeigerarithmetik, objektorientierte Tier-Datenbank](https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/20190107/hp-uebung-20190107.pdf)
+ * [07.01.2019: Speicherformate von Zahlen, Zeigerarithmetik](https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/20190107/hp-uebung-20190107.pdf)
 
 Musterlösungen:
 ---------------
@@ -61,6 +61,7 @@ Tafelbilder:
  * [26.11.2018: Prakikumstermine, Bit-Operationen](https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/20181126/photo-20181126-174025.jpg)
  * [03.12.2018: Pull-Down- und Pull-Up-Widerstand](https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/20181203/photo-20181203-173451.jpg)
  * [10.12.2018: Grafik abspeichern; Zweierkomplement auf 4-Bit-Rechner](https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/20181210/photo-20181210-173116.jpg)
+ * [07.01.2019: Quicksort](https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/20190107/photo-20190107-173418.jpg)
 
 Praktikumsunterlagen:
 ---------------------
diff --git a/hp-slides-2018ws.pdf b/hp-slides-2018ws.pdf
index a861ce592b389e66db263c6535c1655e7ca50609..9f7631627647f4f2346501d7e59e07c00fab9a13 100644
Binary files a/hp-slides-2018ws.pdf and b/hp-slides-2018ws.pdf differ
diff --git a/hp-slides-2018ws.tex b/hp-slides-2018ws.tex
index b4f71a5c0810aec66fc8d1788ceda898f5032806..3857cfffb7d651540dd07210f95adead692fef55 100644
--- a/hp-slides-2018ws.tex
+++ b/hp-slides-2018ws.tex
@@ -32,6 +32,6 @@
   \includepdf[pages=-]{20181210/hp-20181210.pdf}
   \pdfbookmark[1]{17.12.2018: Rekursion, Aufwandsabschätzungen}{20181217}
   \includepdf[pages=-]{20181217/hp-20181217.pdf}
-  \pdfbookmark[1]{07.01.2019: Aufwandsabschätzungen, objektorientierte Programmierung in C}{20190107}
+  \pdfbookmark[1]{07.01.2019: Aufwandsabschätzungen, dynamische Speicherverwaltung}{20190107}
   \includepdf[pages=-]{20190107/hp-20190107.pdf}
 \end{document}