Struct zur Laufzeit erweitern

Gast #2542561
Lesenswert?
• ▲
▼
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.
#2542782
Lesenswert?
• ▲
▼
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren