C中局部变量的内存分配

可能重复:
局部变量的内存是否可以在其范围之外访问?
范围与C中变量的生命期

int *p;

void foo()
{
    int i = 5;
    p = &i;
}

void foo1()
{
    printf("%dn", *p);
}

int main()
{
   foo();
   foo1();
   return 0;
}

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

注意:我正在Linux上运行此程序

据我所知,本地自动变量的范围仅限于块/函数的寿命。

  • 在foo()中,这个变量在哪个内存段中存储? 或者所有函数的局部变量都获得商店的位置?
  • 我如何从另一个函数访问它?

  • 在访问foo1() *p时调用未定义的行为。 如果你添加了这样的功能:

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

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

    链接地址: http://www.djcxy.com/p/36337.html

    上一篇: memory allocation for local variable in C

    下一篇: Pointer to local variable in C++