变量存在于流程的哪些逻辑段中?

问题描述

"在进程的哪些逻辑段 变量 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存在于堆栈段中。

https://stackoverflow.com/a/14588866/3035795