Thread C, malloc, realloc, int arrays und segfaults (6 answers)
Opened by FoolAck at 2009-01-27 05:24

FoolAck
 2009-01-27 09:29
#118376 #118376
User since
2008-05-02
69 Artikel
BenutzerIn
[default_avatar]
Jo danke esskar. Hat geholfen.
War mir irgendwie klar, dass es ein vermeidbarer (irgendwo offensichtlicher) Fehler sein musste.

Hab das hier wohl über-/nicht genau genug gelesen:
Quote
void *realloc(void *ptr, size_t size);
[...]
On success a pointer to the memory block is returned (which may be in a different location as before). On failure or if size is zero, a null pointer is returned.

Ich dachte man braucht den return value nur für error-checking.
Aber stimmt, wenn der angeforderte memory-Block zu groß ist muss er die Startaddresse (bzw. den gesamten Block) wohl verschieben.

Nunja. Nochmals danke für die fixe Hilfe.

edit:
Quote
size *= 2; wird schnell groß, dass ist dir klar, oder? würde es auch fast so schreiben size += size;

Das das rechnerisch das Gleiche ist, ist dir klar, oder? Oder meinst du vonwegen "Stil"?
Hm, aber dadurch, dass die Größe quadratisch ansteigt kommt man mit sehr wenigen realloc() Aufrufen aus. Wobei natürlich viel an Speicher verschenkt wird. Hm, aber ich denke ich kann damit leben.

View full thread C, malloc, realloc, int arrays und segfaults