sai () livre memória alocada em _SUCCESS e _FAILURE

Este é um pequeno trecho de código, com duas chamadas paraexit(3) em caso de falha. Essas chamadas desalocam a memória alocada pelo malloc? A pesquisa do Google uma vez diz que sim e, mais vezes, não ...

Devo adicionar free ()?

Além disso: qual é melhorif (!word)(também funcionaria para, por exemplo, word == 0 que é diferente da palavra == NULL, então eu acho que está errado) ouif (word == NULL) ?

char *word = NULL, *temp = NULL;
    word = (char *)malloc(sizeof(char) * size);

    if (!word) {            /* or maybe rather it should be (word == NULL)  */
        perror("malloc fail");
        if (fclose(fp)) {
            perror("fclose fail");
            exit(3);                            /* exit without free ? */
        }
        exit(3);                                /* exit without free ? */
    }

Desde já, obrigado!

questionAnswers(4)

yourAnswerToTheQuestion