Ganz kleine Frage zu free()
-
Hi.
Ist das äquivalent?
if (p != NULL) free(p);
if (p) free(p);
Ich nutze letzteres immer, aber sehe überall nur die obere Version.
Da wollte ich mal fragen, warum alle die längere nutzen.
-
http://www-ccs.ucsd.edu/c/stdlib.html#free
beide sind richtig, erstere ist schwachsinn.
man koennte auch diese varianten benutzen, die aber alle schwachsinn sind, weil ein schlichtes free(pointer); richtig ist:
if (p) free(p); // bedingung verkuerzt if (p) free(p), p = NULL; // pointer nach gebrauch zu NULLen hat erst in komplizierteren faellen eine berechtigung (als stoppmarker in pointer-arrays z.b.)
edit: ich merk grad ich hab die beispiele falsch gelesen... sorry.
-
Beides ist unnötig, weil free selber checkt, ob der Pointer == NULL ist, also ein einzelnes free(p); reicht vollkommen aus, auch ohne if ABfrage.
-
diffutils-2.8.1, diff.c, zeilen 1357 bis 1360:
if (free0) free (free0); if (free1) free (free1);
wer haette das gedacht!
ist trotzdem unsinn. steht ja sogar in saemtlichen ansi c referenzen.