C语言中局部变量的内存分配

C语言中局部变量的内存分配,c,memory-management,C,Memory Management,可能重复: 输出:5(foo1()打印i的值) 注意:我在Linux上运行这个程序 据我所知,局部自变量的范围仅限于块/函数的寿命 foo()中的变量i存储在哪个内存段中?或者函数的所有局部变量都在哪里存储 如何从另一个函数访问它 在foo1()中访问*p时,您正在调用未定义的行为。 如果添加了如下函数: void do_very_little(void) { char buffer[] = "abcdef"; puts(buffer); } 在调用foo()和foo1()

可能重复:

输出:5(foo1()打印i的值)

注意:我在Linux上运行这个程序

据我所知,局部自变量的范围仅限于块/函数的寿命

  • foo()中的变量i存储在哪个内存段中?或者函数的所有局部变量都在哪里存储
  • 如何从另一个函数访问它

  • foo1()
    中访问
    *p
    时,您正在调用未定义的行为。 如果添加了如下函数:

    void do_very_little(void)
    {
        char buffer[] = "abcdef";
        puts(buffer);
    }
    

    在调用
    foo()
    foo1()
    之间调用它,可能会得到不同的输出。这不是保证;关于未定义的行为,有趣的一点是,任何事情都可能发生,你没有理由抱怨。

    这已经被问到了,请在发布之前搜索网站。你也可以使用编辑窗格顶部的按钮来组织你的问题,因为你现在可以在chris的编辑之后找到它。在提出要求之前,请至少投入一点工作。
    void do_very_little(void)
    {
        char buffer[] = "abcdef";
        puts(buffer);
    }