可能重复:
ptr 为 NULL 的 free(ptr) 是否会损坏内存?
在 C 中释放 NULL 指针是一种好习惯吗?
我有一个关于释放空指针的问题。
char *p = NULL;
free(p);
会不会free(NULL)
导致崩溃?
还是取决于编译器?
可能重复:
ptr 为 NULL 的 free(ptr) 是否会损坏内存?
在 C 中释放 NULL 指针是一种好习惯吗?
我有一个关于释放空指针的问题。
char *p = NULL;
free(p);
会不会free(NULL)
导致崩溃?
还是取决于编译器?
来自免费的手册页
void free(void *ptr);
free() 函数释放 ptr 指向的内存分配。如果 ptr 是 NULL 指针,则不执行任何操作。
如果您想从 C 手册本身获得确认
free 函数会导致 ptr 指向的空间被释放,也就是说,可用于进一步分配。如果 ptr 是空指针,则不会发生任何操作。
请参阅本文档的第 313 页。