int *p;
p = (int*)malloc(sizeof(int));
free(p);
问题是 free
后,p
指针还存在吗?
如果存在,那么 p
是指向 NULL
吗?或者是野指针?
free前后指针没有改变
这是未定义行为,由编译器的实现来决定,所以老老实实的写p=NULL;
指向原来的地址,但是那个地址所代表的内存已经被释放,不能再使用了,这就是野指针。
int *p;
p = (int*)malloc(sizeof(int));
free(p);
问题是 free
后,p
指针还存在吗?
如果存在,那么 p
是指向 NULL
吗?或者是野指针?
free前后指针没有改变
这是未定义行为,由编译器的实现来决定,所以老老实实的写p=NULL;
指向原来的地址,但是那个地址所代表的内存已经被释放,不能再使用了,这就是野指针。