robi wolną pamięć alokowaną przez exit () na _SUCCESS i _FAILURE

To krótki fragment kodu z dwoma wywołaniamiexit(3) w przypadku awarii. Czy te wywołania zwalniają pamięć przydzieloną przez malloc? Wyszukiwarka Google mówi, że tak, a jeszcze więcej razy ...

Czy powinienem dodać darmowe ()?

Również: co jest lepszeif (!word)(działałoby to również np. w przypadku słowa == 0, które różni się od słowa == NULL, więc myślę, że jest źle) lubif (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 ? */
    }

Z góry dziękuję!

questionAnswers(4)

yourAnswerToTheQuestion