Forum: Compiler & IDEs Linked List, Implementation


von Matze (Gast)


Lesenswert?

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

von Udo S. (urschmitt)


Lesenswert?

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.

von Klaus W. (mfgkw)


Lesenswert?

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.

von Udo S. (urschmitt)


Lesenswert?

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?

von Oliver (Gast)


Lesenswert?

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

von Peter D. (peda)


Lesenswert?

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
Noch kein Account? Hier anmelden.