Samuel K. schrieb:
> man nicht machen: 100 20 2 -> Da hab ich schon den Speicher voll.
> Also müsste ich die Array nur so groß machen wie ich sie brauche.
> Ich weiß aber vorher nicht wieviele Züge es gibt.
Gegenfrage:
Dein Speicherausbau sieht so aus
[ loakle Variablen ]
[ Speicher für dynamische Allokierungen ]
[ Stack ]
Der SPeicher für lokale Variablen ist fix, die brauchst du.
Der Stack wächst nach Bedarf, hat aber auch eine Obergrenze größen-
mässig.
Und das Loch dazwischen, dort ist Platz für dynamische Allokierungen.
Dieses Loch ist aber sowieso begrenzt. Wenn du also nur 1 Ding hast, das
du ständig dynamisch allokieren willst, dann kannst du dir das auch
gleich sparen und den Speicher statisch als globale Variable anlegen und
mit einer Maximalgröße allokieren. Denn: Wenn der Speicher nicht reicht,
dann reicht er auch dann nicht, wenn du dynamisch allokierst.
Das einzige was du dir mit dynamischer Allokierung ins Boot holst, ist
zusätzlicher Aufwand. Aber sonst gewinnst du nichts. Du hast ja nicht
mehr Speicher zur Verfügung, nur weil du dynamisch allokierst. Eher
sogar weniger, weil malloc ja auch für seine Verwaltungsinfo etwas
Speicher braucht. Und wenn dann noch Speicherfragmentierung dazu kommt,
dann ist es sowieso ganz schnell zappenduster.