C语言 变量混淆



我必须在函数中读取更多元素P。每次循环创建 pElem 更好吗?

dataStr *  process(char *start, char *stop, GTree* tree)
{
  while ( (cp != NULL) && ( cp   < nextI))
  {
      //I malloc inside of getPElem function
      pElem * p = getPElem(cp, dateP, s);
      free(p);
  }
}

还是我应该更好地初始化一次 P 元素并每次都重用它?

dataStr *  process(char *start, char *stop, GTree* tree)
{
  pElem * p = malloc(sizeof(p));
  while ( (cp != NULL) && ( cp   < nextI))
  {
      fillPElem(p, cp, dateP, s);
  }
  free(p);
}

如果一个元素会更好,我是否应该在函数外部将其 malloc(函数"进程"也在循环中调用):

dataStr *  process(char *start, char *stop, GTree* tree, pElem * p )
{
  while ( (cp != NULL) && ( cp   < nextI))
  {
       fillPElem(p, cp, dateP, s);
  }      
}

还是每次在函数内部都像第二个示例一样?

如果您不需要 pElems 的生存时间超过封闭范围,则根本不需要动态分配:

dataStr *  process(char *start, char *stop, GTree* tree)
{
  pElem p;
  while ( (cp != NULL) && ( cp   < nextI))
  {
      fillPElem(&p, cp, dateP, s);
  }
}

(是的,我知道 cp、nextI 等都没有定义 - 我只是从问题中复制)。

相关内容

  • 没有找到相关文章

最新更新