Ì 用于在释放指针之前确保指针不为空,因此我通常会销毁动态创建的结构,如下所示:
Node *destroy_node(Node *node) {
if (node) {
free(node);
}
return NULL;
}
但是CERT MEM34建议既然 free() 接受空指针,我也可以写
Node *destroy_node(Node *node) {
free(node);
return NULL;
}
正确吗?
最佳答案
是的,将NULL
(空指针常量)传递给free()
是完全有效的。
引用 C11
,第 §7.22.3.3 章,(强调我的)
The
free
function causes the space pointed to byptr
to be deallocated, that is, made available for further allocation. Ifptr
is a null pointer, no action occurs. [...]
关于c - free()之前是否需要检查指针是否为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40546675/