Hallo, wie implementiere ich in reinem C das Aufbauen einer verketteten Liste? Kann ich für jedes neue Element malloc() aufrufen, auch wenn das nur ein paar Byte sind? Oder ist da der Overhead für die Speicherverwaltung zu groß? Wie macht man das eigentlich sonst? Dank und Gruß, Matze
Matze schrieb: > wie implementiere ich in reinem C das Aufbauen einer verketteten Liste? Schon mal nachgesehen wie viele Treffer das in Google ergibt? Matze schrieb: > Kann ich für jedes neue Element malloc() aufrufen, auch wenn das nur ein > paar Byte sind? So macht man das normal. Welche Alternative hast du denn? Matze schrieb: > Oder ist da der Overhead für die Speicherverwaltung zu > groß? Wie groß ist der Overhead? Ein Zeiger auf das nächste Element, plus das was das Memory Management braucht. Die Frage ist doch bringt dich das in irgendeine Not wegen Speicher? Matze schrieb: > Wie macht man das eigentlich sonst? Man alloziert einen großen Block und schreibt siche eine eigene (bessere?) Speicherverwaltung.
Matze schrieb: > Kann ich für jedes neue Element malloc() aufrufen, auch wenn das nur ein > paar Byte sind? Ja > Oder ist da der Overhead für die Speicherverwaltung zu > groß? Hatten wir neulich hier schon. > Wie macht man das eigentlich sonst? Selten anders.
Nachtrag: Vieleicht sind die Fragen eher: Was willst du erreichen? Brauchst du eine verkettete Liste? Gibt es andere (einfachere oder geeignetere) Arten deine Daten abzulegen?
Linked lists, und das in C :staun: Das sind natürlich die allerneuesten design patterns aus der Informatik-Hexenküche, dazu findet man (und google) kaum weiterführende Informationen, ist ja alles noch nie dagewesen ;) Speicheranforderungen zur Laufzeit brauchen in C nunmal entweder malloc, oder du schreibst dir selber einen eigene Spiecherverwaltung, die für deine spezielle Datengröße effektiver ist. Ich würde aber mal mit malloc anfangen ;) Oliver
Matze schrieb: > Wie macht man das eigentlich sonst? Auf nem MC ist ja der verfügbare RAM und alle laufenden Tasks bekannt. Daher reserviert man besser die maximal benötigte Größe schon zur Compilezeit. Peter
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.