内存泄露
在调用getmemory函数的时候,先将str指向的地址传递给形参
这样p就先指向NULL
然后分配一块内存给指针p,这个时候p指向新分配的内存地址,而实参并没有受到影响
free的时候,由于实参没有指向分配的内存地址,所以无法释放,导致内存泄露
#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);
}
这是个实参和形参的问题,就是说你调用函数的时候并没有改变str原来的值,懂了没,恩,可以把getmemory的参数改成二级指针