Dynamisches Struktur Array größe?
-
Kann ich die größe eines Structur Feldes/Array ermitteln, welches mit malloc Speicher bekommt? Wenn ja, wie?
Wenn nein, wie kann ich mein dyn Struktur Array einfach in ein neues kopieren, welches nur so groß ist wie mein s (s kenne ich).
also grob: copy(mallocStruct,von,bis,nachStruct)
gruß und einmal mehr danke
dominik
-
Nachträglich ermitteln kannst du die Größe afaik nicht (und wenn, dürfte das nicht portabel sein). Du kannst dir höchstens beim malloc()-Aufruf merken, wieviel Speicher du dir geholt hattest.
(zwecks Kopieren: schau dir mal memcpy() an - ist das für dich geeignet?)
-
i = Anzahl, bekomme ich nach einem Schleifendurchlauf. struct dats *neueDaten[i]; memcpy(neueDaten, daten, i*sizeof(struct dats));
aber das macht er nicht so recht
-
Entscheide dich, ob du ein Array oder einen Pointer verwenden willst
Aktuell hast du ein Array mit i (nicht initialisierten) Zeigern auf "struct dats".
int i=...; struct dats* neueDaten = malloc(i*sizeof(struct dats)); memcpy(neueDaten,Daten,i*sizeof(struct dats));
-
Hi,
Ich schätze mal, du willst dein Array eigentlich nur vergrößern...
Der Vorteil läge in der Performance.
Dann würde ich mir realloc ankucken.http://www.cplusplus.com/ref/cstdlib/realloc.html
Gruß,
Reallocer