使用后该指针变量ptr一定要重新指向NULL,防止野指针出现,有效 规避误操作。比如如下:
当然这是C版的;不全但是最后结果看截图。可以知道ptr指向还是原来的内存单元,只不过是该内存单元被标示可擦除了。
~~~
typedef struct data{
int year;
char *name;
}Data;
Data *pd=malloc(sizeof(Data));
pd->name="pengrong";
pd->year=32;
printf("%s\t%d\n",pd->name,pd->year);
free(pd);
printf("%s\t%d\n",pd->name,pd->year);
~~~
输出
![这里写图片描述](https://box.kancloud.cn/2016-02-24_56cd211dcc378.jpg "")
没free的话 你的printf会按规定的数据类型去打印
而你free以后 没有了数据类型限定的内存单元空间 printf方法就没办法正常打印了
所以调用完后必须把ptr手动赋值为null;防止野指针存在。