对于如下的代码,在VS2013环境下,编译器并不报错。
但是我个人认为,主函数在调用f函数后,局部变量i的空间被释放,*p虽然指向i,但是应该没有i的访问权限。
请各位大牛指导,谢谢!
#include
#include
void f(int **q)
{
int i = 5;
*q = &i;
}
int main(void)
{
int *p;
f(&p);
printf("%d\n", *p);
system("pause");
return 0;
}
这样做是不安全的,编译器应该会报个警告吧。