在csdn上遇到一个问题,通过阅读大家对问题的解答,解除了自己多年的一个疑惑,实参,形参之间的传递问题.
该问题如下:
void getbuf(char *p,int num)
{
p=(char*)malloc(sizeof(char)*num);
{
p=(char*)malloc(sizeof(char)*num);
}
int main()
{
char *pstr=NULL;
getbuf(pstr,10);
strcat(pstr,"hello");
return 0;
}
上面这块代码有问题吗
int main()
{
char *pstr=NULL;
getbuf(pstr,10);
strcat(pstr,"hello");
return 0;
}
上面这块代码有问题吗
仔细分析上面的代码,出问题的地方有两处:
1.getbuf函数作用是通过参数传递获得分配的内存.但此处的传递不能获得分配的内存,并且造成了内存泄漏.
2.主程序内,没有对新分配的内存进行判断,初始化,释放操作.容易造成内存操作错误,赋值不准确,内存泄漏.
首先,谈谈这段代码的运行过程,这里引用网友