如何解决变量存在于流程的哪些逻辑段中?
"在进程的哪些逻辑段 变量 f 和 c 是否存在?"
int c = 5;
void main(int argc,char **argv)
{
int f = fork();
if(f == 0)
{
c += 5;
}
else
{
f = fork();
c += 10;
if(f)
{
c += 5;
}
}
}
大家好,我有点困在这个问题上,我猜 c 是一个全局变量并且在数据区域中,而 f 在堆栈中(因为 main 是一个过程调用),但我不清楚关于逻辑段的含义。我非常感谢专家的眼光来查看这个问题并告诉我我错过了什么。提前致谢。
解决方法
初始 c
变量仅存在于主进程中(在 f == 0
分支中)。每次 fork 时,它都会被克隆,但每个进程都有自己的 c
变量副本。
看到这个答案https://stackoverflow.com/a/4299626/3035795
而且全局变量像你说的那样存储在数据段中,所以答案是c
存在于数据段中,f
存在于堆栈段中。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。