For some reason, I cannot manage to correctly free the structure I created, which goes as follows:
struct dictionary{
char word[50]; // Word to be described
char definition[150]; // Definition of said word
struct dictionary* next; // Linked list structure
}*dic;
typedef struct dictionary Dic;
Dic* newWord(char word[], char definition[]){
    Dic* dc;
    dc = malloc(sizeof(*dic));
    strcpy(dc->word,word);
    strcpy(dc->definition,definition);
    dc->next = NULL;
return dc;
}
Now, if I do something like:
dc = newWord("Word","definition");
free(dc);
printWord(dc);
where:
void printWord(Dic* dic){
    if(dic){
    printf("<%s>\n",dic->word);
    printf(".%s\n",dic->definition);
    }
}
will result in no word being printed, yet the definition still being printed, which I can only assume means I'm not properly freeing this structure's memory. How do I go by properly doing it?
 
     
    