dynamische Speicherverwaltung
-
Eine Texteingabe mittels eines String Bausteins einer Unser Interface möchte anschließend in einer TextMessageBox angezeigt werden.
Zur Lösung dieser Aufgabe ist mir nur eine statische Speicherlösung eingefallen. Nämlich ein Speicherarray von [50] Stellen und anschließend einer Verwendung der Funktionen Get...() und Set...().
Eine dynamische Lösung würde ermöglichen eine exakt identische Speicherresvervierung, wie die Texteingabe benötigt. Also wenn 4 Buchstaben bzw. Zeichen eingegeben werden, so ein Array mit 4 Stellen wird angelegt.
Danke für Eure Lösungsmitteilungen
-
Du hast doch schon gesagt, dass dynamische Speicherverwaltung die Lösung ist. Du musst halt entweder im Vorhinein gucken wie viel Speicher du brauchst oder wenn dir der Speicher ausgeht obwohl noch was fehlt, forderst du neuen zusätzlich an.
Außerdem: Welche Sprache?
-
Die Sprache ist c++.
Eine Lösung ist mir nur statisch bewusst indem ein Array mit einer Größe vorgegeben wird.
Gib doch mal ein Beispiel mittels Quellcode für eine dynamische Speicherreservierung, also nur soviel Speicher wird angelegt, wie auch von z.B einer Texteingabe auch benötigt wird.
-
Wenn's C++ ist kannst du dir das ganze sowieso sparen, da gibt es in der Standardbibliothek allerlei fertige Container die das alles schon automatisch machen. Dadurch wird die Sache trivial:
std::string eingabe; std::cin >> eingabe;
Und wenn du es selber machen willst, dann fügst du am Ende vom String einfach immer mit push_back an.
P.S.: Und vergiss Arrays in C++, wenn du keinen guten Grund dafür hast. Nichts besseres zu kennen ist kein guter Grund. Es ist recht selten, dass man reine Arrays braucht. Guck dir mal std::vector und die anderen Container an.
-
BTW: Texteingabe lieber via getline(cin, eingabe);
MfG SideWinder
-
SideWinder schrieb:
BTW: Texteingabe lieber via getline(cin, eingabe);
MfG SideWinder
Warum? Das kommt doch wohl total auf den Anwendungszweck an.
-
reagiert cin nicht bei Leerzeichen nicht so, wie es ein "Laie" erwarten würde?
-
Eine Lösung einer dynamischer Speicherreservierung mittels einer zusätzlichen Variable ist für mich in etwa eine folgende Lösung.
int length; //Variablendeklaration für den Wert einer ermittelten Länge vom Speicher
char text; //Variablendeklaration zur Speicherablage vom Textinhaltfunktion Textausgabe(funktion Texteingabe());
{
length = sizeof(funktion Texteingabe());
text = malloc(length + 1);
}
Danke für Eure Beiträge