谁能帮我解释一下下面这段代码有什么错误,并详细说明,谢谢

2025-05-12 16:51:50
推荐回答(3个)
回答1:

内存泄露
在调用getmemory函数的时候,先将str指向的地址传递给形参
这样p就先指向NULL
然后分配一块内存给指针p,这个时候p指向新分配的内存地址,而实参并没有受到影响
free的时候,由于实参没有指向分配的内存地址,所以无法释放,导致内存泄露

回答2:

#include
#include
#include
void getmemory(char *&p) //这样就正常了!这样就正常了!这样就正常了!
{
p=(char *)malloc(100);
strcpy(p,"hellp,world!");
}
void main()
{
char *str=NULL;
getmemory(str);
printf("%s\n",str);
free(str);
}

回答3:

这是个实参和形参的问题,就是说你调用函数的时候并没有改变str原来的值,懂了没,恩,可以把getmemory的参数改成二级指针