Hallo zusammen, folgendes fiktives Projekt soll programmiert und abgegeben werden. Eine Kuchenteigmaschine soll mit einem Arduino angesteuert werden. Die Verschiedenen Zutaten sollen zusammengemixt und weiterverarbeitet werden. Dabei sind die Anzahl der Zutaten, einzelne Zutaten und Mengenangaben der verschiedenen Kuchen in einem Textdokument auf der SD-Karte gespeichert. Die SD-Karte ist dem Anwender zugänglich. Er kann die Textdatei also ändern und neue Kuchen hinzufügen oder Alte löschen. Da verschiedene Kuchen ausgewählt werden können, kenne ich die Anzahl der Zutaten und Mengenangaben erst beim Einlesen der Daten. Ist es sinnvoller Speicher für einen Array dynamisch zu allokieren und die einzelnen Zutaten/Mengen darin zu speichern oder einfach einen Array zu erstellen, der groß genug ist damit alles reinpasst? Konnte in der SuFu nichts finden und bin verunsichert weil ich im Netz gesehen hab, dass von dynamischer Speicherverwaltung auf einem Microkontroller eher abgeraten wird. Hoffe ihr könnt mir helfen. Grüße thanekrios
Patrick N. schrieb: > Ist es sinnvoller Speicher für einen Array dynamisch zu allokieren Dynamisch allokieren ist nur dann sinnvoll, falls bei einer kleinen Allokierung der verbleibende Speicher durch irgendetwas anderes (z.B. eine weitere dynamische Allokierung) genutzt werden kann. Da man auf Mikrocontrollern eher selten ein OS mit mehreren Programmen nutzt, welche den freibleibenden Speicher nutzen können, braucht man diese nicht zu beachten. Falls der ungenutzte Speicher aber durch nichts anderes verwendet werden kann, ist die dynamische Allokierung nutzlos - dann kannst du gleich ein Array machen, das so groß ist wie der Speicher erlaubt, und das so voll machen wie nötig. So gilt zwar der ganze Speicher als "belegt" auch wenn das Array tatsächlich halb leer ist, aber das stört ja nicht (für unbelegten Speicher gibts kein Geld zurück). Patrick N. schrieb: > dass von dynamischer Speicherverwaltung auf einem > Microkontroller eher abgeraten wird. Richtig, denn die Allokierung bedeutet einen gewissen Overhead (Rechenzeit+Speicher) der nicht gut vorherberechnet werden kann, und es werden Fehlerbehandlungen nötig für wenn kein Speicher mehr frei ist. Insbesondere für sicherheitskritische Funktionen wäre es blöde, wenn sie nicht ausgeführt werden können, weil nicht mehr genug Speicher da ist. Daher verzichtet man oft darauf.
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.