This question already has answers here:
Closed 5 years ago.
Can a local variable's memory be accessed outside its scope?
(20个答案)
在上面的代码中
十
局部变量仅在声明它的函数中是活动的,并且当控件从函数中出来时,应取消分配局部变量。但这并没有发生。
它的印刷10年了吗?有人能解释这种行为吗?
(20个答案)
#include<stdio.h>
int *sample();
int main(void)
{
int *p;
p=sample();
printf("%d",*p);
return 0;
}
int *sample()
{
int *p,x=10;
p=&x;
return p;
}
在上面的代码中
x
是局部变量。当我用gcc编译上面的代码时,得到的输出是:十
局部变量仅在声明它的函数中是活动的,并且当控件从函数中出来时,应取消分配局部变量。但这并没有发生。
它的印刷10年了吗?有人能解释这种行为吗?
最佳答案
虽然该行为在C标准中没有正式定义,但实际上内存中的值会一直保留,直到有其他东西覆盖它们。
更多详情请访问Why do I have values in my array that I didn't assign?
关于c - 当控件脱离功能时,为什么局部变量值仍然存在,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18250547/
10-11 21:05