How should malloc()'s return value be used?
In general, the return value of malloc() should be used directly in an assignment or initialization. I don't recommend casting its return value:
* The cast is not required in ANSI C.
* Casting its return value can mask a failure to #include <stdlib.h>, which leads to undefined behavior. As C99 slows becomes more popular, this will become less of an issue, because C99 requires all functions to be declared before they are called.
* If you cast to the wrong type by accident, odd failures can result. This is especially true if <stdlib.h> is not #included, as above, but alignment can still cause trouble on particularly odd systems.
Some people do disagree, often because such casts are required in C++. But good C++ code should generally avoid malloc() entirely, using C++'s new instead. Most of the time, it doesn't make sense to compile code as both C and C++, outside of specialized circumstances such as those described by P.J. Plauger in article 9sFIb.9066$nK2.4505@nwrddc01.gnilink.net. |