(C) malloc und free
Verfasst: So Nov 22, 2009 3:47 pm
Ich arbeite ja gerade an den Listen aus dem Tutorial.
Dann habe ich jetzt einfach mal um die Ausgabe auch etwas zu gestalten so ein Address-Struct aufgebaut
Wenn ich der Node jetzt eine Hausnummer und einen Familiennamen zuweise klappt das ganz gut. Also für den Familiennamen allokiere ich ja Speicher per malloc. Wenn ich die Node jetzt lösche dann muss ich den ja auch wieder freigeben. Wenn alle meine Nodes einen Namen haben ist das ja kein Problem. Aber wenn ich jetzt eine Node habe, welche keinen Familiennamen hat und ich dann ein free() aufrufe dann gibt es ein Problem.
Wie kann ich überprüfen ob Familienname überhaupt belegt ist? Ich kann Familienname ja einfach ausgeben (egal ob belegt oder nicht) mit toBeRemoved->Data.Familienname. Da steht jetzt wenn ich es nicht belege irgendein Pfad drin. Wenn ich jetzt aber ein free aufrufe geht das nicht.
Eine Abfrage ala if(toBeRemoved->Data.Familienname != NULL ) führt leider nicht zum gewünschten Ergebnis. Ist anscheinend immer != NULL
Habe da jetzt auch schon gegoogelt und hier im Forum gesucht aber es ist irgendwie schwer da was zu finden...zu malloc und free gibt es ja genug. Nur alles was ich finde geht davon aus, dass auch wirklich was belegt ist bevor free aufgerufen wird.
gruß stampuhh
Dann habe ich jetzt einfach mal um die Ausgabe auch etwas zu gestalten so ein Address-Struct aufgebaut
Code: Alles auswählen
struct Address
{
int hausnummer;
char * Familienname;
};
Wie kann ich überprüfen ob Familienname überhaupt belegt ist? Ich kann Familienname ja einfach ausgeben (egal ob belegt oder nicht) mit toBeRemoved->Data.Familienname. Da steht jetzt wenn ich es nicht belege irgendein Pfad drin. Wenn ich jetzt aber ein free aufrufe geht das nicht.
Eine Abfrage ala if(toBeRemoved->Data.Familienname != NULL ) führt leider nicht zum gewünschten Ergebnis. Ist anscheinend immer != NULL

Habe da jetzt auch schon gegoogelt und hier im Forum gesucht aber es ist irgendwie schwer da was zu finden...zu malloc und free gibt es ja genug. Nur alles was ich finde geht davon aus, dass auch wirklich was belegt ist bevor free aufgerufen wird.
gruß stampuhh