Verhalten von free()
-
Guten Tag,
ist das Verhalten von free() auf "irgendwelche" und/oder auf Null-Zeiger definiert?Beispiel 1:
char buffer[10]; free(buffer);
Beispiel 2:
char *buffer = 0; free(buffer);
Beispiel 3:
char *buffer; free(buffer);
Besten Dank für die Hilfe schonmal im voraus - ich finde da irgendwie nichts..
-
Auf "irgendwelche" nicht, nur auf Nullzeiger und auf solche, die vorher von malloc, calloc oder realloc zurückgeliefert wurden. Bei Nullzeigern passiert nichts, in den anderen definierten Fällen wird der Speicherblock freigegeben.
-
Danke, Beispiel 2 ist also erlaubt und Beispiel 3 nicht. Wie siehts mit Beispiel 1 aus? Wahrscheinlich auch verboten oder?..
Na gut, kann man wohl nichts machen, vielen Dank jedenfallsAch ja - falls Du da zufällig eine passende Stelle im Standard kennen würdest..
-
cooky451 schrieb:
Wie siehts mit Beispiel 1 aus? Wahrscheinlich auch verboten oder?..
Ja, natürlich.
Ach ja - falls Du da zufällig eine passende Stelle im Standard kennen würdest..
[#2] The free function causes the space pointed to by ptr to
be deallocated, that is, made available for further
allocation. If ptr is a null pointer, no action occurs.
Otherwise, if the argument does not match a pointer earlier
returned by the calloc, malloc, or realloc function, or if
the space has been deallocated by a call to free or realloc,
the behavior is undefined.
-
Super, alles geklärt.