关于C++的返回临时对象指针的疑问
char *f()
{
char s[]="HELLO";
return s;
}
char *f1()
{
char *p=NULL;
char s[]="world";
p=s;
return p;
}
int *f2()
{
int *p;
int i = 32;
p = &i;
return p;
}
void main()
{
cout << f() << endl;
cout << f1() << endl;
cout << *f2() << endl;
return;
}
f()种申明的s为临时变量。函数返回后s就释放了,所以main函数输出的是乱码。
f1()申明的指针p指向的是局部变量s,函数返回后,s释放,所以main输出的也是乱码。
f2()按我的理解p也指向的时局部变量i,i在函数结束后也应该释放掉,我设想最后在main中输出的同样是乱码,但事实恰恰相反,在vc60的环境下我编译后,程序正常输出了32。很让我费解。