Here’s the chapter and verse.
If the argument [to the
freefunction] does not match a pointer earlier returned by thecalloc,malloc, or
reallocfunction, or if the space has been deallocated by a call tofreeorrealloc,
the behavior is undefined. (ISO 9899:1999 – Programming languages — C, Section 7.20.3.2)