Is it guaranteed safe to pass NULL to free()?