It's clear from the C standards that NULL is an acceptable input to free(), with the result being no operation performed. However, this seems to violate the idea that free() must only be called on memory that was explicitly allocated using malloc(), calloc(), or realloc().
What's the reasoning behind this exception? The only reason I can figure is so that callers do not have to explicitly check for NULL before calling free().