Hallo, willkommen zurück. Dies wird unsere letzte Aufgabe sein, unsere letzte
Herausforderung für unseren Zeigerabschnitt.
Bei dieser Herausforderung möchte ich, dass Sie verstehen,
wie die dynamische Speicherzuweisung funktioniert. Sie müssen also eine Zeichenfolge mallocieren.
Es wird ziemlich einfach sein.
Sie werden jedoch das
gesamte Konzept der dynamischen Speicherzuweisung verstehen.
Was sind die Vorteile der dynamischen Speicherzuweisung?
Nun, es bedeutet, dass Sie genügend Speicher zuweisen können, wenn Sie ihn benötigen.
Sie müssen keinen Speicher verschwenden. Und wenn Sie mehr Speicher benötigen, können Sie ihn neu zuweisen.
Bei dieser Aufgabe müssen Sie nur malloc verwenden.
In dieser Herausforderung schreiben Sie ein Programm, das Ihr Verständnis der dynamischen Speicherzuweisung testet.
Ich möchte, dass Sie ein Programm schreiben, mit dem der Benutzer eine Textzeichenfolge eingeben kann.
Sie müssen also scanf verwenden. Sie können auch gits verwenden,
wir haben noch keine Tonne darüber gesprochen, aber mit gits oder
fgits im Standardeingabestream können Sie eine Zeichenfolge
lesen, die Leerzeichen enthält. Denken Sie daran, scanf
liest die Zeichenfolge nur bis zu einem Leerzeichen.
Wenn Sie Git s verwenden, können Sie mehrere Zeichenfolgen
lesen, die durch Leerzeichen getrennt sind.
Der Benutzer muss eine Zeichenfolge eingeben. Das Programm druckt den
eingegebenen Text.
Das mag sehr einfach erscheinen, aber der Unterschied besteht darin, dass das Programm die
dynamische Speicherzuweisung verwenden wird.
Sie können den Benutzer auch das Limit der Zeichenfolge eingeben lassen, die
er eingibt, und diese dann für malloc verwenden, damit Sie wissen, wie viele Bytes zugewiesen werden müssen.
Sie sollten einen Zeichenzeiger erstellen, nur einen Zeichenzeiger, keine Zeichenarrays.
Ich möchte, dass Sie Speicher zuweisen. Denken Sie daran, dass beim Erstellen des
Zeichenarrays der Speicher automatisch bereits für Sie zugewiesen wird, basierend auf
der Größe, die Sie
in die Klammern gesetzt haben. Ein großer Nachteil davon ist nun, dass Sie neu
kompilieren müssen, wenn Sie versuchen, etwas einzugeben, das größer ist als das, was Sie in die Größe eingegeben haben.
Es ist statisch. Dieser Speicher wird zur Kompilierungszeit zugewiesen.
Dynamischer Speicher wird zugewiesen, wenn Sie das Programm ausführen.
Auf diese Weise können Sie anhand der vom Benutzer eingegebenen Daten bestimmen, wie viel Speicher Sie zuweisen möchten.
Bitten Sie den Benutzer daher erneut, eine Zahl für die Anzahl der
Bytes einzugeben, die Sie der Zeichenfolge zuweisen möchten.
Bitten Sie dann den Benutzer, die Zeichenfolge einzugeben.
Und Sie müssen den Speicher korrekt zuweisen und dann diesen Zeichenzeiger an scanf oder
git s übergeben
und dann im Grunde nur den eingegebenen Text anzeigen.
Und zum Schluss vergessen Sie nicht die alles entscheidende freie Funktion.
Sie möchten Ihren Speicher immer freigeben, wenn Sie ihn nicht
mehr verwenden, und Sie möchten sicherstellen, dass Sie dies tun, damit andere
Programme diesen Speicher nutzen können. Speicher ist eine knappe
Ressource, insbesondere bei Echtzeitprogrammen für eingebettete Systeme. Verzehren Sie den Speicher
also nicht, sondern geben Sie ihn frei.
Viel Glück und ich werde in der nächsten Vorlesung eine Lösung anbieten. Vielen Dank.