I'm trying to free a char pointer, and I see the below behaviour

Case 1:
Code:
int main()
{
char *oneLineTerm;
free(oneLineTerm);
printf("freed memory"); /* Not printed */
}
Case 2:
Code:
int main()
{
char *oneLineTerm;
if(*oneLineTerm != NULL)
    free(oneLineTerm);
printf("freed memory"); /* Printed */
}
What exactly happening in free() function here?