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上运行此程序
据我所知,本地自动变量的范围仅限于块/函数的寿命。
在访问foo1()
*p
时调用未定义的行为。 如果你添加了这样的功能:
void do_very_little(void)
{
char buffer[] = "abcdef";
puts(buffer);
}
并在调用foo()
和foo1()
之间调用它,您可能会得到不同的输出。 这不能保证; 关于未定义行为的一个有趣的事情是,任何事情都可能发生,你没有理由抱怨。