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.