Speicher
Speicher
Kernkonzept
Speicher besteht aus einer Folge von Bytes
Variablen im Speicher
- Beispiel int32_t: wird in 4 aufeinanderfolgenden Bytes gespeichert
- Deklaration einer Variable reseriert Speicher für sie

- Die Variablen werden nicht unbedingt hintereinander abgelegt
- Zuweisung entspricht Belegung des Speichers mit einem Wert
Speicher - Abstraktion
- Virtueller Speicher: Ein Bytarray
- Aus Sicht eines Programmes:
- Jedes Programm hat seinen eigenen Speicher
- Es hat eine "unbegrenzte Speichermenge"
- Der Zugriff auf alle Speicherbereiche ist gleich schnell...
Speicher - Realität

- kein unbegrenzter physikalischer Speicher
- Alle Programme teilen sich den selben Speicher
- Speicherplatz wird das Betriebssystem zugewiesen und verwaltet
- Es gibt eine Speicherhierachie
- Cache, RAM, Festplatte, Netzwerk-Speicher (schnell -> langsam)
- Speicherzugriffsfehler sind besonders schwer zu finden
- Effekte sind oft weit von der Ursache entfernt
Speicher und C-Programme
implizit
- Speicher nach Bedarf für
- Problematik
- Speicher für C-Funktionen unbekannt vor Programmaufruf
- Warum? Funktionsaufrufreihenfolge unbekannt!
- Idee: Speichern der Variablen, etc. in einer dynamisch wachsenden Datenstruktur: User-Stack (Benutzer-Stapel)
explizit
- Speicher bei Bedarf explizit für C-Variablen, wenn die benötigte Speicher von Parametern abhängig ist
- Problematik
- Speicherbedarf für C-Variablen unbekannt vor Programaufruf
- Warum? Anforderungen (Parameter) unbekannt!
- Idee: Speichern der Variablen, etc. in einer weiteren dynamisch wachsenden Datenstruktur: dem Heap (Haufen)
.png)