Hallo Gemeinde. Der versuch ist, zur Laufzeit einen "früh-gebundenen" Speicherbereich zu vergrößern (ohne Datenverlust). Ich habe z.B. folgende verschachtelt Struktur: struct complex { int element1; int element2; int element3; } struct test { int einfacheZahl; complex komplexeZahl[10]; int einfacheZahl2; } Ich lege in meiner main()-Routine ein Datum von Typ test an: main() { test meinContainer; tueEtwas(); } Kann ich nun irgendwie über die Funktion tueEtwas meinen Speicher für meinContainer so reallokieren/ausbauen, dass ich nicht 10*komplexeZahl habe, sondern 123*komplexeZahl? 1. Wenn ja, wie funktioniert dies in C++? 2. Was passiert mit meinem einfacheZahl2? (der Bereich darf auf keinen Fall überschrieben werden!) Vielen Dank im Voraus.
1 | typedef struct { |
2 | int element1; |
3 | int element2; |
4 | int element3; |
5 | } complex_t; |
6 | |
7 | typedef struct { |
8 | int simpleNum1; |
9 | complex_t *complexNum[1024]; |
10 | int simpleNum2; |
11 | } test_t; |
So brauchst du "nur" 1k * 4 byte, und holst per malloc den speicher für complex komplexeZahl[i] einzelnd. Ansonsten: Linked List, std:map, std:vector
> Wenn ja, wie funktioniert dies in C++?
std::vector<complex> statt array?
Random ... schrieb: > typedef struct { > int simpleNum1; > complex_t *complexNum[1024]; > int simpleNum2; > } test_t; > > So brauchst du "nur" 1k * 4 byte, und holst per malloc den speicher für > complex komplexeZahl[i] einzelnd. 1 Pointer in der struct tuts auch, an den man ein dynamisch erzeugtes Array anbindet. Aber in C++ ist das alles kein Thema. std::vector wurde ja schon genannt.
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.