首页 文章

C中的局部变量的内存分配[重复]

提问于
浏览
0

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

int *p;

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

void foo1()
{
    printf("%d\n", *p);
}

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

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

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

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

  • 在foo()中这个变量得到的内存段是什么?或函数的所有局部变量在哪里获得商店?

  • 如何从其他功能访问此功能?

1 回答

  • 2

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

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

    并在调用 foo()foo1() 之间调用它,你可能得到一个不同的输出 . 没有理由抱怨.2399155没有理由提出申诉 .

相关问题