C 变量存在于流程的哪些逻辑段中?
“在流程的哪些逻辑段中 变量f和c是否存在?”C 变量存在于流程的哪些逻辑段中?,c,process,global-variables,fork,instance-variables,C,Process,Global Variables,Fork,Instance Variables,“在流程的哪些逻辑段中 变量f和c是否存在?” 大家好,我对这个问题有点困惑,我猜c是一个全局变量,在数据区域,f在堆栈中(因为main是一个过程调用),但我不清楚逻辑段是什么意思。我将非常感谢一位专家的眼光来审视这个问题,并告诉我我遗漏了什么。提前感谢。初始c变量仅在主进程中存在(在f==0分支中)。每次fork时,它都会被克隆,但每个进程都有自己的c变量副本 看到这个答案了吗 全局变量如您所说存储在数据段中,因此答案是c存在于数据段中,f存在于堆栈段中 请看我认为这个问题不一定值得两次否决票
大家好,我对这个问题有点困惑,我猜c是一个全局变量,在数据区域,f在堆栈中(因为main是一个过程调用),但我不清楚逻辑段是什么意思。我将非常感谢一位专家的眼光来审视这个问题,并告诉我我遗漏了什么。提前感谢。初始
c
变量仅在主进程中存在(在f==0
分支中)。每次fork时,它都会被克隆,但每个进程都有自己的c
变量副本
看到这个答案了吗
全局变量如您所说存储在数据段中,因此答案是c
存在于数据段中,f
存在于堆栈段中
请看我认为这个问题不一定值得两次否决票,但如果代码的格式是可读的,它会有所帮助。我假设逻辑段的含义会在你所学的任何课程中得到解释,因为确切的含义可能会有所不同。但是,最常见的选项可能是文本/代码、数据(可能是bss)、堆栈和堆。您已经在这里解决了这个问题。答案并不特定于C语言,而是特定于目标体系结构。也许克林贡(或量子)计算机具有POSIX兼容性:-)
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;
}
}
}