Informatik Programmierung – C und Speicherverwaltung
Karteikarten zum Thema „Informatik“ · 14 Karten · von atrio. Beispiele: Was ist ein Pointer in C? · Wie deklariert man einen Pointer auf int?
Karten
14 KartenWas ist ein Pointer in C?
Rückseite
Ein Pointer speichert die Speicheradresse einer Variablen und ermöglicht direkten Speicherzugriff über Adressen statt Werten.
Wie deklariert man einen Pointer auf int?
Rückseite
Über 'int *ptr;' – der Stern vor dem Variablennamen kennzeichnet ptr als Zeiger auf einen Integer-Wert.
Was bewirkt der Dereferenzierungsoperator *?
Rückseite
Der Operator * greift auf den Wert an der im Pointer gespeicherten Adresse zu – Dereferenzierung liefert den referenzierten Wert.
Unterschied zwischen Stack und Heap?
Rückseite
Stack: automatische Verwaltung, LIFO, schnell, begrenzt. Heap: manuelle Verwaltung via malloc/free, größer, langsamer, fragmentierungsanfällig.
Wofür steht malloc und was gibt es zurück?
Rückseite
malloc reserviert Byte-Block auf dem Heap, gibt void*-Adresse zurück oder NULL bei Fehler. Größe in Bytes als Parameter.
Wie gibt man dynamisch allokierten Speicher frei?
Rückseite
free(ptr) gibt den bei ptr beginnenden Heap-Block an das System zurück. ptr darf danach nicht mehr dereferenziert werden.
Was ist ein Speicherleck (Memory Leak)?
Rückseite
Speicherleck: dynamisch allokierter Heap-Speicher wird nicht per free() freigegeben – Speicher bleibt bis Programmende belegt, unzugänglich.
Was ist ein Dangling Pointer?
Rückseite
Dangling Pointer zeigt auf bereits freigegebenen Speicherbereich. Dereferenzierung führt zu undefiniertem Verhalten – Pointer nach free() auf NULL setzen.
Was bewirkt calloc im Gegensatz zu malloc?
Rückseite
calloc allokiert Array von n Elementen à size Bytes, initialisiert alle Bytes mit 0. malloc liefert uninitialisierten Speicher.
Wozu dient realloc?
Rückseite
realloc ändert Größe eines existierenden Heap-Blocks, erweitert oder verkleinert. Bei Verschiebung kopiert es Inhalte, gibt neue Adresse zurück.
Was passiert bei Pointer-Arithmetik bei int*?
Rückseite
Bei int* addiert ptr+1 die Größe von int (meist 4 Byte) zur Adresse – Zeiger springt zum nächsten Integer.
Wie übergibt man ein Array an eine Funktion?
Rückseite
Arrays verfallen zu Pointern auf erstes Element. Funktion erhält 'int *arr' oder 'int arr[]', Länge separat übergeben.
Was bedeutet NULL bei Pointern?
Rückseite
NULL ist Makro für Nullpointer (Adresse 0). Zeigt an, dass Pointer kein gültiges Objekt referenziert – Pflichtprüfung nach malloc.
Wie erkennt man Speicherlecks zur Laufzeit?
Rückseite
Valgrind (memcheck) detektiert Leaks, ungültige Zugriffe, double-free zur Laufzeit. Kompilieren mit -g, starten: 'valgrind ./programm'.