Albert schrieb:
> data = realloc(data, sizeof(weatherdata) * (sizeOfDataSpace+10));
Das ist zwar besser, aber immer noch ungeschickt.
Stell' Dir folgende Situation vor:
Vor dem Aufruf von realloc zeigt data auf Speicher, den Du mühsam
angefordert und gefüllt hast.
Nun willst Du mehr Speicher anfordern als verfügbar ist, was realloc
mit dem Zurückgeben von NULL quittiert.
Und was ist mit den Daten, auf die vorher data zeigte?
Die sind immer noch da. Aber Du hast mit der Zuweisung des Ergebnisses
von realloc an data weggeworfen, wo die Daten sind, d.h. Du kannst
den Speicher auch nicht mehr freigeben ...
Fazit: Niemals den Rückgabewert von realloc unmittelbar dem gleichen
Pointer zuweisen, der als erstes Argument übergeben wird. Nimm einen
Hilfspointer, prüfe den und erst wenn er nicht NULL ist, weist Du diesen
neuen Pointer dem jetz ungültigen Pointer data zu. Ist er aber NULL,
ist data nach wie vor gültig, und Du hast die Chance, irgendwas
sinnvolles damit anzufangen.