你什么时候考虑一​​个程序泄漏,你必须在退出前自由吗?

时间:2018-03-12 13:18:30

标签: c memory-leaks

我们有一个长期的辩论,仍然没有回答与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"将正常退出,但没有免费

这三个计划中哪一个是最差和最好的。 显然,第一个是最好的。 但是另外两个呢?

我们真的需要释放,因为程序退出之后,内存将由操作系统返回吗?

感谢大家提出这个大问题。

0 个答案:

没有答案