This question already has answers here:
Closed 5 years ago.
Can a local variable's memory be accessed outside its scope?
(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