void free(void *ptr)调用后ptr的值是什么

来源:互联网 发布:莎士比亚全集版本 知乎 编辑:程序博客网 时间:2024/06/05 05:37

使用后该指针变量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);

输出
这里写图片描述

没free的话 你的printf会按规定的数据类型去打印
而你free以后 没有了数据类型限定的内存单元空间 printf方法就没办法正常打印了
所以调用完后必须把ptr手动赋值为null;防止野指针存在。

0 0