Hallo,
es ist schwer bei Malloc und Realloc zu prüfen ob alles richtig gemacht wurde oder nicht. Warum? Naja wenn ich einfach mal Speicher mit Malloc reserviere, sagen wir 5Byte aber ich 8Byte reinschreibe, dann gibt es kein Fehler. Weil das System automatisch das ganze erweitert. Hier habe ich 5Byte reserviert, ABER viel mehr reingeschrieben als nötig. Trozdem ist das kein Problem:
Alles klappt, obwohl ich nur 5Byte reserviere und viel mehr reinschreibe. Eigentlich hätte das so aussehen müssen:
Deswegen ist das ganze sinn vom Realloc nicht so klar. Man braucht es garnicht. Sehe ich das jetzt richtig, code okey? - gut man hätte es anders schreiben können, aber ich denke Ihr versteht was ich meine. Wer hätte jetzt einen sinnvollen Beispiel?
Danke und Gruß
Edit: Ok sehe, dass das mit dem Realloc strenggenommen da so eig. nicht funktioniert. Was ich damit sagen wollte ist, dass sobald mein 5Byte reservierte platz nicht ausreicht, sollte man eigentlich mit Realloc erweitern, was aber anscheinend unnötig ist, weil das system eh immer alles automatisch erweitert.
es ist schwer bei Malloc und Realloc zu prüfen ob alles richtig gemacht wurde oder nicht. Warum? Naja wenn ich einfach mal Speicher mit Malloc reserviere, sagen wir 5Byte aber ich 8Byte reinschreibe, dann gibt es kein Fehler. Weil das System automatisch das ganze erweitert. Hier habe ich 5Byte reserviert, ABER viel mehr reingeschrieben als nötig. Trozdem ist das kein Problem:
PHP:
char *p;
p = malloc(5); //irgendwo 5Byte Reservieren
if(p != 0)
strcpy(p, "ABCDEFGHIJKL");
else
printf("\nkein platz mehr im speicher :'( \n");
printf("\nausgabe von p: %s\n", p);
Alles klappt, obwohl ich nur 5Byte reserviere und viel mehr reinschreibe. Eigentlich hätte das so aussehen müssen:
PHP:
char *p;
p = malloc(5); //irgendwo 5Byte Reservieren
if(p != 0)
strcpy(p, "ABCDEFGHIJKL");
else {
p = realloc(p, 10); //jetzt haben wir 15Byte
printf("\nspeicherplatz wurde erweitert, neuer versucht :'(\n");
//funktion neu aufrufen
}
printf("\nausgabe von p: %s\n", p);
Deswegen ist das ganze sinn vom Realloc nicht so klar. Man braucht es garnicht. Sehe ich das jetzt richtig, code okey? - gut man hätte es anders schreiben können, aber ich denke Ihr versteht was ich meine. Wer hätte jetzt einen sinnvollen Beispiel?
Danke und Gruß
Edit: Ok sehe, dass das mit dem Realloc strenggenommen da so eig. nicht funktioniert. Was ich damit sagen wollte ist, dass sobald mein 5Byte reservierte platz nicht ausreicht, sollte man eigentlich mit Realloc erweitern, was aber anscheinend unnötig ist, weil das system eh immer alles automatisch erweitert.
Zuletzt bearbeitet: