-2

可能重复:
ptr 为 NULL 的 free(ptr) 是否会损坏内存?
在 C 中释放 NULL 指针是一种好习惯吗?

我有一个关于释放空指针的问题。

char *p = NULL;
free(p);

会不会free(NULL)导致崩溃?

还是取决于编译器?

4

1 回答 1

3

来自免费的手册页

void  free(void *ptr);

free() 函数释放 ptr 指向的内存分配。如果 ptr 是 NULL 指针,则不执行任何操作。

如果您想从 C 手册本身获得确认

free 函数会导致 ptr 指向的空间被释放,也就是说,可用于进一步分配。如果 ptr 是空指针,则不会发生任何操作。

请参阅文档的第 313 页。

于 2012-11-20T11:01:11.290 回答