C 在子进程中的fork()之后发生泄漏,为什么?
Mac OSX 10.13.3。 系统泄漏实用程序在下一代码中显示4(两个2048和两个16)泄漏: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); } #包括 #包括 #包括 内部主(空)
#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表示现在在父进程中发布的代码无法处理错误在子进程中,代码将永远不会退出,因此父进程将永远等待。