From Open Groups’ specifications:
If ptr is a null pointer, realloc()
shall be equivalent to malloc() for
the specified size.If ptr does not match a pointer
returned earlier by calloc(),
malloc(), or realloc() or if the space
has previously been deallocated by a
call to free() or realloc(), the
behavior is undefined.