##代码
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void GetMemory(char **p,int num)
{
*p = malloc(num);
}
int main()
{
char *str = NULL;
GetMemory(&str, 100);
strcpy(str, "hello");
free(str);
if (str != NULL)
{
strcpy(str, "world");
}
printf("\n str is %s", str);
getchar();
}
打印出来的结果是:str is world
##解释
本题主要考察了对free的理解,总结一下就是3点
- free只是释放了malloc所申请的内存,并不改变指针的值
- 由于指针所指向的内存已经被释放,所以其它代码有机会改写其中的内容,相当于该指针从此指向了自己无法控制的地方,也称为野指针
- 为了避免失误,最好在free之后,将指针指向NULL