这样一段代码
#include<stdio.h>
int main(){
int *p;
p = NULL;
free(p);
printf("test\n");
return 0;
}
最后可以使用gcc编译成功并且输出结果是:
test
为什么free一个空指针没有报错,反而可以顺利运行到输出语句?
-
The free() function frees the memory space pointed to by ptr, which must have been returned by a previous call to malloc(), calloc() or realloc(). Otherwise, or if free(ptr) has already been called before, undefined behavior occurs. If ptr is NULL, no operation is performed.