微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决变量存在于流程的哪些逻辑段中?

"在进程的哪些逻辑段 变量 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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。