Ich lese ein Buch ( Programmieren mit POSIX-Threads von Butenhof, 1997), das C verwendet, und bin auf die folgende Zeile gestoßen:
(void)free(data);
Hier data
ist nur ein Zeiger auf eine zugewiesene Struktur,
data = malloc(sizeof(my_struct_t));
Warum ist das Ergebnis der free
Besetzung void
?
Nach meinem Verständnis von C scheint dies aus zwei Gründen keinen Sinn zu ergeben:
- Die freie Funktion kehrt bereits zurück
void
- Der Code verwendet nicht den Rückgabewert (er wird nicht einmal einer Variablen zugewiesen).
Das Buch wurde 1997 geschrieben. Ist das eine Art Vermächtnis?
Der Autor erwähnt, dass die Beispiele unter Digital Unix 4.0d ausgeführt wurden, aber ich kann mir immer noch keinen Grund vorstellen, das Ergebnis einer Funktion jemals umzuwandeln, wenn Sie dieses Ergebnis nicht verwenden.
free()
als eine Kuriosität in dem Buch, die Sie nicht emulieren müssen. Es war vor langer Zeit halb relevant, aber es ist nicht mehr relevant.