gpt4 book ai didi

c - fork 没有段错误

转载 作者:太空狗 更新时间:2023-10-29 14:51:47 24 4
gpt4 key购买 nike

此代码产生了段错误:

int main(int argc, char *argv[]){
int *n;
*n = atoi(argv[1]);
printf("n: %d \n", *n);
return 0;
}

虽然这有效:

int main(int argc, char *argv[]){
int *n;
*n = atoi(argv[1]);
pid_t pid = fork();
if (pid == 0)
return 0;
else
printf("n: %d \n", *n);
return 0;
}

为什么第二个用 fork 工作?我知道在 int *n 之后,我应该使用 malloc()int 分配空间,但是使用 fork( ) 似乎自动执行此操作。

编辑:现在我明白了未定义的行为 :)但现在我要问:这个具体案例的原因是什么?

最佳答案

它不起作用。 (或者更准确地说,你有未定义的行为)

1) fork 只是隐藏了段错误,因为您没有检查子进程的退出代码。

2) 内存分配不是自动的——永远不会!

您只是写入一个随机位置,您可能只是“幸运”地在第二个版本中随机位置在您的进程空间内。

关于c - fork 没有段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31616228/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com