04_dynamischeSpeicherverwaltung_handout_Z Flashcards

1
Q

Was sind Variablen in Programmen?

A

Variablen sind Stellvertreter für Hauptspeicheradressen und dienen zur Datenspeicherung in Programmen.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Was sind globale Variablen und wie lange existieren sie?

A

Globale Variablen sind von jeder Programmstelle aus zugänglich, werden beim Programmstart erzeugt und existieren bis zum Programmende.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Wie werden globale Variablen zugewiesen und wann bleibt ihre Speicherzuteilung fixiert?

A

Die Speicherzuteilung für globale Variablen erfolgt durch den Compiler und bleibt fixiert.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Was sind lokale Variablen und wann werden sie erstellt und zerstört?

A

Lokale Variablen sind nur im jeweiligen Gültigkeitsbereich zugänglich, werden beim Eintritt in den Gültigkeitsbereich erstellt und beim Verlassen zerstört.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Warum ist dynamische Speicherverwaltung notwendig?

A

Dynamische Speicherverwaltung ist notwendig, um flexible Datenspeicherung zu ermöglichen, die nicht an einen Gültigkeitsbereich gebunden ist, z.B. bei der Bildverarbeitung.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Was ist der Heap und welche Rolle spielt er in der dynamischen Speicherverwaltung?

A

Der Heap (Haldenspeicher oder Freispeicher) ist der Bereich, in dem dynamisch Speicher allokiert wird, wobei Speicherbereiche in beliebiger Reihenfolge angefordert und freigegeben werden können.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Welche Hauptfunktionen zur dynamischen Speicherverwaltung gibt es?

A

Die Hauptfunktionen zur dynamischen Speicherverwaltung sind malloc() (Speicher anfordern) und free() (Speicher freigeben).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Welche zusätzlichen Funktionen zur dynamischen Speicherverwaltung gibt es und was machen sie?

A

Zusätzliche Funktionen sind calloc() (fordert Speicher an und initialisiert ihn mit 0) und realloc() (ändert die Größe eines bestehenden Speicherbereichs).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Wo sind die Funktionen zur dynamischen Speicherverwaltung deklariert?

A

Die Funktionen sind im Headerfile stdlib.h deklariert.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Wie erfolgt der Zugriff auf dynamisch allokierten Speicher und was muss dabei beachtet werden?

A

Der Zugriff erfolgt über Pointer. Der Rückgabewert von malloc() ist ein Pointer auf den Beginn des zugewiesenen Speicherbereichs und muss typischerweise gecastet werden.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Warum ist es wichtig, nicht mehr benötigten Speicher explizit freizugeben?

A

Es ist wichtig, Speicher freizugeben, um Speicherlecks (memory leaks) zu vermeiden, die zu Programmabstürzen führen können.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Welche Probleme können durch Speicherlecks entstehen?

A

Speicherlecks können zu Programmabstürzen und ineffizienter Speicherverwendung führen.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Wie vermeidet man Speicherlecks?

A

Speicherlecks werden vermieden durch diszipliniertes Programmieren und explizites Freigeben von nicht mehr benötigtem Speicher.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Wie wird in Sprachen wie Python, Java und C# Speicher verwaltet?

A

In diesen Sprachen erfolgt die Speicherfreigabe automatisch durch das Laufzeitsystem (Garbage Collector).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Was sind die Vorteile und Nachteile der automatischen Speicherverwaltung?

A

Vorteile: Verhindert weitgehend Speicherlecks und entlastet den Programmierer. Nachteile: Führt zu zusätzlichem Overhead und erfordert dennoch bewusste und korrekte Programmierung.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Was zeigt das folgende C-Beispiel?

A

Das Beispiel zeigt, wie man 128 Byte an Speicher mit malloc() anfordert und diesen Speicher mit free() wieder freigibt.

17
Q

Was ist die Schlussfolgerung zur dynamischen Speicherverwaltung?

A

Dynamische Speicherverwaltung bietet Flexibilität bei der Speicherzuteilung und -freigabe, erfordert aber sorgfältige Programmierung, um Speicherlecks zu vermeiden. Automatische Speicherverwaltungen in modernen Sprachen erleichtern diese Aufgabe, benötigen aber auch eine bewusste und korrekte Programmierung.