两种方法都有效,但在ptr == NULL
的情况下哪一种方法更快/更高效?
void voo()
{
str *ptr = NULL;
// try to malloc memory and do something
// leaving methode and free the memory
if(ptr != NULL)
{
free(ptr);
ptr = NULL;
}
}
如果我离开方法,是否需要if
查询?在任何情况下,不仅要快速给予free
记忆吗?
void baa()
{
str *ptr = NULL;
// try to malloc memory and do something
// leaving methode and free the memory
free(ptr);
ptr = NULL;
}
答案 0 :(得分:9)
来自C标准,7.20.3.2 / 2,如果ptr
为NULL
,则free(ptr)
不执行任何操作。
从性能和多余的代码角度来看,检查这一点毫无意义。