【发布时间】:2011-12-25 05:23:09
【问题描述】:
谁能帮我理解这些程序的输出。
int* fun1();
void fun2();
int main()
{
int *p=fun1();
fun2();
printf("%d\n",*p);
return 0;
}
int* fun1()
{
int i=10;
return &i;
}
void fun2()
{
int a=100;
printf("%d\n",a);
}
在 Windows 上为 100 100,在 Linux 上为 100 10。由于局部变量是在堆栈上分配的,因此我能够证明 Windows 输出是合理的。但是在Linux中怎么会是100 10。
【问题讨论】: