これは短いコード スニペットでexit(3)
、失敗した場合に備えて を 2 回呼び出します。これらの呼び出しは、malloc によって割り当てられたメモリの割り当てを解除しますか? Google 検索では、あると表示されますが、そうでない場合も多くあります...
free() を追加する必要がありますか?
また、どちらが良いですif (!word)
か(たとえば、word == 0 は word == NULL とは異なるため、間違っていると思います)またはif (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 ? */
}
前もって感謝します!