读书人

一个函数传参和局部变量作用域有关问题

发布时间: 2012-10-27 10:42:26 作者: rapoo

一个函数传参和局部变量作用域问题
如:
void fun1(int **p)
{
int a = 10;
*p = &a;
}

int main()
{
int *p = NULL;
fun1(&p);
printf("%i",*p);
}

能正确输出10,但是请问这样写安全吗?局部变量a不是在函数fun1结束的时候自动释放吗?
最近写c/c++的些许困惑,请高人解答。

[解决办法]
这样的写法当然是不安全的,建议这样写:

C/C++ code
#include <stdio.h>void fun1(int *p){    *p = 10;}int main(){    int p;    fun1(&p);    printf("%d\n", p);    return 0;}
[解决办法]
探讨

引用:

这样的写法当然是不安全的,建议这样写:



那请问那成功输出10是偶然的吗?还是内存还没来得及释放的原因?

读书人网 >C++

热点推荐