|
|
发表于 2005-10-20 23:31:18
|
显示全部楼层
c是pass by value的
你的fun只是改变了被推入堆栈的p的值,不会改变p原来的值
也就是说fun执行完之后
i和p的值都不变
一般来说如果利用一个函数去调用malloc,这个函数应该保存,并返回malloc的返回值
第二
用一个函数去来free,这个函数的原型你写对了
不过调用时应该传给它一个pointer,而且一定是左值
所以还是这样:
int *fun(){
return (int *)malloc(sizeof(int));
}
int main(){
int *p = fun();
fre(p);
}
第三
如果如果分配时一定要用参数传递的话
应该这样
void fun(int **p){
*p = (int *)malloc(sizeof(int));
}
int main(){
int *p;
fun(&p);
fre(p);
} |
|