这是我的代码,如何在调用后释放def pullDefect (JiraKey,ComponentType):
connect to jira project ‘JiraKey’
low = low pids for ‘ComponentType’
med = med pids for ‘ComponentType’
high = high pids for ‘ComponentType’
defectCount = [low, med, high]
return defectCount
。我是C的初学者,所以感谢你的帮助。
new_double_size
在另一个地方,我称之为:
size_t get_doubled_size(Vector *vtr, size_t new_size){
size_t *new_double_size = malloc(sizeof(size_t));
*new_double_size = vtr -> capacity;
while(new_size > *new_double_size){
*new_double_size *= 2;
}
return *new_double_size;
}
答案 0 :(得分:3)
显然,你需要在释放之前获得它的价值,例如:
size_t return_value = *new_double_size;
free(new_double_size);
return return_value;
但在这种情况下,您甚至不需要为新大小分配空间......只需直接使用size_t
变量。
答案 1 :(得分:2)
如果要控制变量的生命周期,则只应使用malloc
。在这种情况下,您不需要这样做,您可以更简单地编写:
size_t get_doubled_size(Vector *vtr, size_t new_size)
{
size_t new_double_size = vtr -> capacity;
while(new_size > new_double_size)
new_double_size *= 2;
return new_double_size;
}
答案 2 :(得分:0)
我们无能为力,因为我们不知道Vector
是什么。
我建议使用flexible array members并让每个更改或变异的函数返回一个新的向量,如果它以灵活的数组成员结束。
或者至少有一个void grow_vector(Vector*vec, unsigned newsize)
功能。
通常,在C中,您应该有关于memory management和文档负责释放内存的文档很好的约定。通常你会创建构造函数和析构函数。
答案 3 :(得分:-1)
当函数退出时,变量本身不再存在。但那并不重要。 calling conventions确保返回值返回给调用者。你不能做的是返回一个函数局部变量的地址:
int *foo( void ) {
int i = 42;
return &i;
}
在这种情况下,i
的地址被正确返回但不能以任何有意义的方式使用,因为函数返回后i
不再存在(超出范围)。
这个答案的内容来自Alan Au的评论。