我必须在函数中读取更多元素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(函数“process”也在循环中调用):
dataStr * process(char *start, char *stop, GTree* tree, pElem * p )
{
while ( (cp != NULL) && ( cp < nextI))
{
fillPElem(p, cp, dateP, s);
}
}
或者每次在函数内部都像第二个例子一样?
答案 0 :(得分:3)
如果您不需要pElems比封闭范围更长寿,则根本不需要动态分配:
dataStr * process(char *start, char *stop, GTree* tree)
{
pElem p;
while ( (cp != NULL) && ( cp < nextI))
{
fillPElem(&p, cp, dateP, s);
}
}
(是的,我知道cp,nextI等都没有定义 - 我只是从问题中复制过来。)