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存在于堆栈段中 请看我认为这个问题不一定值得两次否决票

“在流程的哪些逻辑段中 变量f和c是否存在?”


大家好,我对这个问题有点困惑,我猜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;
            }
        }
    }