免费(指针)方法的性能?

时间:2014-09-04 12:00:47

标签: c++ c pointers malloc free

两种方法都有效,但在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;
}

1 个答案:

答案 0 :(得分:9)

来自C标准,7.20.3.2 / 2,如果ptrNULL,则free(ptr)不执行任何操作。

从性能和多余的代码角度来看,检查这一点毫无意义。