找出下面程序中的错误并改正
void getMemory(char **p)
{
if(NULL == *p)
{
*p = (char *)malloc(100);
}
}
int main()
{
char *str;
getMemory(&str);
strcpy(str,”hello world!”);
puts(str);
return 0;
}
程序分析:
由于没有初始化指针str,其定义之后指向一个随机的空间,因此产生了一个典型的野指针,
在getMemory函数中,指针str即*p与NULL值判断的结果为假,因此不会分配空间,意味着函数调用结束之后,str此时还是一个指向随机地址的野指针,而操作野指针指向的空间可能会发生不可预知的错误,因此必须将str初始化为NULL
char *str = NULL;改完之后的答案。
再就是最后要是申请到空间将地址赋值给str之后也要记得去释放申请到的str所指向的空间。