这是一小段代码,exit(3)
在失败的情况下会调用两次。这些调用是否会释放 malloc 分配的内存?谷歌搜索曾经说过它会,甚至更多次,它不会......
我应该添加 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 ? */
}
提前致谢!