hell-student
Lieutenant
- Registriert
- Nov. 2007
- Beiträge
- 671
Hallo Zusammen,
Ich habe momentan folgendes Problem. Ich habe ein Dynamisches Array von einem Struct erzeugt mit malloc, welches ich zur Laufzeit erweitere. Darin enthalten sind sowohl ints als auch wieder ein Array von typ int, welches ich auch gerne varial hätte.
Habe also irgendein Struct s mit
s *s_array = (struct s *) malloc(2 * sizeof(struct s));
Ich weis, man sollte malloc ja nicht casten, aber irgendwie hats so funktioniert. Wenn also das Array s_array voll ist (Vergleich geht über counter) rufe ich realloc auf (und verdopple).
All dies funktioniert wunderbar, sofern ich das interne array c weglasse. Wenn ich aber dafür auch wieder Speicher allokiere, pfuscht er im Speicher rum und löscht mir meinen ersten Eintag des Struct Arrays. Also wenn beispielsweise wie hier 2 Einräge dann voll sind und ich möchte einen dritten hinzufügen sieht es so aus:
slot 0: Eintrag X
slot 1: Eintrag Y
Einfügen von Z
Array erweitert auf 4
slot 0: Eintrag Z
slot 1: Eintrag Y
slot 2: frei
slot 3: frei
Ich hoffe ich konnte einigermaßen darstellen, was mein Problem ist. Wie kann ich den Eintrag C als dynamisches Array implementieren? thx
Ich habe momentan folgendes Problem. Ich habe ein Dynamisches Array von einem Struct erzeugt mit malloc, welches ich zur Laufzeit erweitere. Darin enthalten sind sowohl ints als auch wieder ein Array von typ int, welches ich auch gerne varial hätte.
Habe also irgendein Struct s mit
Code:
struct s {
int a;
int b;
int *c;
}
s *s_array = (struct s *) malloc(2 * sizeof(struct s));
Ich weis, man sollte malloc ja nicht casten, aber irgendwie hats so funktioniert. Wenn also das Array s_array voll ist (Vergleich geht über counter) rufe ich realloc auf (und verdopple).
All dies funktioniert wunderbar, sofern ich das interne array c weglasse. Wenn ich aber dafür auch wieder Speicher allokiere, pfuscht er im Speicher rum und löscht mir meinen ersten Eintag des Struct Arrays. Also wenn beispielsweise wie hier 2 Einräge dann voll sind und ich möchte einen dritten hinzufügen sieht es so aus:
slot 0: Eintrag X
slot 1: Eintrag Y
Einfügen von Z
Array erweitert auf 4
slot 0: Eintrag Z
slot 1: Eintrag Y
slot 2: frei
slot 3: frei
Ich hoffe ich konnte einigermaßen darstellen, was mein Problem ist. Wie kann ich den Eintrag C als dynamisches Array implementieren? thx