我们有一个长期的辩论,仍然没有回答与C编程中的泄漏有关的这个问题, 这是一个小例子:
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
int main(int argc, char **argv)
{
char *s;
if (s = (char *)malloc(7 + 1) == NULL)
exit(1);
s = strcpy(s, "bonjour");
printf("%s\n", s);
if (argc == 2)
exit(1);
else if (argc == 3)
printf("I didn't free and exit normaly");
else
free(s);
return (0);
}
如果我们做一个简单的
gcc leaks.c -o leaks
./leaks
将免费并编程退出正常
./leaks exit
将在没有免费
./leaks "nornamly" "exit wihtout free"
将正常退出,但没有免费
这三个计划中哪一个是最差和最好的。 显然,第一个是最好的。 但是另外两个呢?
我们真的需要释放,因为程序退出之后,内存将由操作系统返回吗?
感谢大家提出这个大问题。