Martin Sche schrieb:
> Von außen wird festgelegt wie oft ein Interrupt ausgelöst werden darf,
> nehmen wir an k-mal. Bei jedem Interrupt schreib ich etwas in ein Array,
> das ich später in meinem Hautprogramm verarbeite. Danach werden die
> Interrupts gesperrt.
> Ich habe dann also k Werte in meinem k großen Array.
> Wenn ich diese Werte verarbeitet habe, brauch ich das Array nicht mehr
> und hätte es jetzt einfach mal "gefreet" um wieder Speicher für weitere
> Variablen zu haben
Welche anderen Variablen?
Wir bewegen uns doch auf einem µC.
D.h. du kannst alles SRAM, welches dir noch zur Verfügung steht, von
Haus aus in dein Werte-Array buttern. Ob dieses SRAM jetzt brach liegt,
oder ob du dort von voneherein ein Array reinlegst, ist Jacke wie Hose.
Der einzige Unterschied:
Legst du das Array statisch an, dann weißt du zur Compilerzeit, wie groß
das Array ist und kannst darauf einfach reagieren, wenn das k zu groß
wird.
Ganz abgesehen davon, dass du bereits nach dem Compilieren weißt,
wieviel Speicher du im SRAM für dich verbrutzelt hast.
Mehr SRAM, als wie wenn du das Array statisch allokierst, kriegst du
auch dann nicht, wenn du eine dynamische Allokierung machst. Auch ein
malloc kann keinen Speicher aus dem Hut zaubern.
> Kann ich also das free getrost wegglasen?
In dem Fall nicht.
Aber das ist auch die falsche Frage. Die richtige Frage lautet: Was
bringt dir eine dynamische Allokierung ausser dass du dem µC zusätzliche
Arbeit aufbürdest?
(Es sei denn natürlich du hättest mehrere dynamische Allokierungen, die
wechselseitig den Speicher belegen. Dann könnte es Sinn machen, mit
malloc zu arbeiten)