Hallo,
ich lerne C programmieren und vestehe die Dynamische Speicherverwaltung nicht wirklich und Tutorials sind auch nicht gerade gut.
Hier das Programm:http://pastebin.com/Y1nYk3um
Danke im voraus
Gruß MrAnonym
Hallo,
ich lerne C programmieren und vestehe die Dynamische Speicherverwaltung nicht wirklich und Tutorials sind auch nicht gerade gut.
Hier das Programm:http://pastebin.com/Y1nYk3um
Danke im voraus
Gruß MrAnonym
Sehr geehrter MrAnonym,
Sie haben eine Frage ?
Sind das Übungsaufgaben (Ihre Hausaufgaben) ?
Mit freundlichem Gruß
TechPech 1984
Das ist eine Übungsaufgabe.
Hallo MrAnonym,
Hier das Programm:http://pastebin.com/Y1nYk3um
Pointer (Zeiger) enthalten eine Speicheradresse an welcher sich Daten befinden.
char *ptr = NULL;
ptr
liefert dann die Speicheradresse und
*ptr
zeigt auf den Speicherbereich welcher char-typen enthält
NULL
ist ein definierter Wert und markiert einen Pointer als undefiniert/ungültig. Debugger und die Debug-Laufzeitbibliotheken kennen diesen Wert und können so konfiguriert werden, dass bei verwendung eines Pointers mit dem Wert NULL eine Fehlermeldung ausgegeben wird.
inFile=fopen(filename,„rt“);
Bei Erfolg liefert fopen() eine Pointer auf eine Struktur welche vom Betriebssystem zur Verwaltung der Datei-Operationen benötigt wird.
Bei einem Misserfolg liefert fopen() den Wert NULL.
Grundsätzlich liefern alle Funktionen, welche eine Pointer zurückgeben, bei einem Misserfolg den Wert NULL zurück. Eigene sollten dies auch tun.
Der konkrete Wert von NULL hängt vor allem von der verwendeten CPU ab. Meistens verwendet der Compiler einen Wert, welcher typischerweise ins ROM zeigt. Das kann dann wirklich die Speicheradresse 0 sein oder eine am Ende des Speicherbereichs.
BTW: In Pascal wird dieser Wert als NIL, von lat. NIHIL = Nichts, bezeichnet.
In C gibt es drei gundlegende Bereiche in welchen Variablen abgelegt werden:
automatische
Diese innerhalb einer Funkttion deklariert und werden auf dem Stack abgelegt. Wenn die Funktion beendet wird, wird auch dieser Speicherplatz freigegeben und die Variablen verschwinden.
Ein typischer Fehler ist z.B. so etwas:
char *f(void)
(
char txt[10];
// mach was und legst in txt ab
return (txt);
)
Die Funktion liefert die Speicheradresse von txt zurück, aber txt ist frei gegeben worden.
Die bisher genannten Variablen haben einen grossen Nachteil:
Ihre Grösse muss zur Compilierzeit schon bekannt sein!
MfG Peter(TOO)