Dynamische Speicherallokation Flashcards

1
Q

Wofür benutzt man Speicherallokationen?

A

Wenn die benötigte Daten- und Speichermenge beim Programmieren unbekannt ist

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

Was bedeutet allokieren?

A

Das Reservieren von Speicher

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

Was versteht man unter Statische Speicherallokation?

A

Wenn der Programmcode vorgibt, wieviel Speicher benötigt wird

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

Was ist das Problem bei statischer Speicherallokation?

A

Während das Programm läuft, kann kein zusätzlicher Speicher genutzt werden; worst case muss für Speicherbedarf betrachtet werden

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

Was versteht man unter worst case?

A

Die Speicherung von Daten benötigt das Maximum an Ressourcen wie z.B. Laufzeit und Speicherplatz; wird auch als Klassifikation von Problemen genutzt

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

Was versteht man unter Dynamische Speicherallokation?

A

Wenn während der Laufzeit Speicher reserviert, genutzt und freigegeben wird. Der Programmierer kann den Speicher selbst verwalten und kontrolliert die Lebenszeit direkt

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

Wie funktioniert Dynamische Speicherallokation in C++?

A

Mithilfe von Pointern und dem “new”-Operator wird neuer Speicher für Speicherobjekte wie z.B. Variablen oder Felder reserviert. Der Pointer zeigt auf die Adresse des Speicherobjektes
Beispiel: int *b= new int (10)

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

Wie gibt man Speicher frei in C++ und warum ist das notwendig?

A

Mit dem “delete”-Operator, um den Arbeitsspeicher nicht zu überfüllen, was zum sonst Absturz führen könnte
Beispiel: int *b= new int (10);
delete b;

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

Wie sieht eine statisch automatische Speicherallokation aus?

A

Die Lebenszeit wird beim Compilieren bestimmt; Speicher wird per Deklaration der Variablen allokiert und auf dem Stack angelegt; Freigabe des Speichers bei Ende des Funktionsrumpfes

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

Wie sieht eine dynamische Speicherallokation aus?

A

Speicher wird durch Schlüsselwort “new” allokiert; Pointer muss verwendet werden, da der new-Operatoren die Speicheradresse des allokierten Speichers liefert; Pointervariable wird im Heap gespeichert; Rumpfende gibt nur Stackspeicher frei; Heapspeicher muss mit dem Schlüsselwort “delete” freigegeben werden

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

Welche Probleme entstehen bei Speicherallokationen?

A

Größere Programme allokieren viel Speicher, der freigegeben werden muss, ansonsten füllt sich der Arbeitsspeicher bis hin zum Absturz; Pointer können zu Speicherzugriffsfehlern führen; sorgfältige Verwaltung notwendig

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

Was versteht man unter dem Wert “nullptr” bzw. “NULL”

A

Einen speziellen Wert, den man benutzt um nicht initialisierte Pointer mit ungültigen Adressen anzeigen zu lassen; erfolglose Versuche von Speicherallokationen anzuzeigen, sowie Freigaben von Speicher zu markieren
Beispiel: int *a= nullptr;

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

Was ist ein Memory Debugger?

A

Ein Debugger, welcher alle Speicherallokationen, Speicherfreigaben und Speicherzugriffe verfolgt und protokolliert und zudem noch Fehlermeldungen liefert, falls Probleme vorliegen. Er kann also Memory leaks auffinden, die man als Speicherlecks bezeichnet.

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

Was versteht man unter “Memory leaks”?

A

Übersetzt nennt man das Speicherlecks. Speicherlecks sind Speicherplätze, die belegt werden, jedoch weder freigegeben, noch genutzt werden können

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