1,代码举例:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
typedef struct stu
{
int num;
char name[10];
int sex;
}STU;
int main()
{
STU* s1 = (STU*)malloc(sizeof(STU));
STU s2;
s2.num = 1001;
memcpy(&(s2.name),"taotao",sizeof(s2.name));
s2.sex = 0;
memset(&(s1->name),0,sizeof(s1->name));
memcpy(s1,&s2,sizeof(STU));
printf("s1->num=%d,s1->name=%s;s1->sex=%d\n",s1->num,s1->name,s1->sex);
free(s1);
s1 = NULL; //防止出现野指针
s1->num = 100;
printf("s1->num=%d\n",s1->num);
return 0;
}
1,在没有s1=NULL这一行时,代码正常运行,但是是有问题的,因为在释放后就成为了野指针,我们再对其操作就是违法的,但是没有加上s1=NULL我们就对野指针进行操作了,就会出现隐形错误。