Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 在子进程中的fork()之后发生泄漏,为什么?_C_Macos_Unix_Memory Leaks_Fork - Fatal编程技术网

C 在子进程中的fork()之后发生泄漏,为什么?

C 在子进程中的fork()之后发生泄漏,为什么?,c,macos,unix,memory-leaks,fork,C,Macos,Unix,Memory Leaks,Fork,Mac OSX 10.13.3。 系统泄漏实用程序在下一代码中显示4(两个2048和两个16)泄漏: #include <sys/wait.h> #include <stdio.h> #include <unistd.h> int main(void) { int st; if (fork()) wait(&st); else while (1); } #包括 #包括 #包括 内部主(空)

Mac OSX 10.13.3。 系统泄漏实用程序在下一代码中显示4(两个2048和两个16)泄漏:

#include <sys/wait.h>
#include <stdio.h>
#include <unistd.h>

int main(void)
{
    int st;

    if (fork())
        wait(&st);
    else
        while (1);
}
#包括
#包括
#包括
内部主(空)
{
int st;
if(fork())
等待(&st);
其他的
而(1),;
}

为什么?

许多C库函数都会导致“泄漏”检查器标记内存泄漏

因此,需要告诉“泄漏”检查器不要检查C库函数


除上述内容外,发布的代码中没有内存泄漏。

MacOSX libc和crt0有泄漏的传言。IIRC,甚至一个hello world程序也在泄漏。但是你自己试试(我不使用MacOSX,但使用Linux)函数:
fork()
有三种返回值1)0表示现在在父进程中发布的代码无法处理错误在子进程中,代码将永远不会退出,因此父进程将永远等待。