我知道 StackOverflow 上有很多关于此主题的答案,它们非常有帮助,但我不确定一件事。假设我有 funcA 和 funcB:
char * funcA()
{
char * arr = malloc(sizeof(char) * 20);
//store data in arr...
return arr;
}
void funcB()
{
char * arr;
while(up to some finite value)
{
arr = funcA();
//do stuff with array
/* Do I perform these two lines here every iteration?*/
free(arr)
arr = NULL;
}
/*Or do I perform it only once, at the end of the loop?*/
free(arr)
arr = NULL;
}
我认为 arr
应该在每次迭代中被释放。或者每次迭代只是“覆盖”arr
中的数据,从而确保只在循环结束时调用 free 是安全的?这样做的正确方法是什么?谢谢。
最佳答案
您需要在循环中调用 free(arr),否则您将丢失指向 arr 的指针并在循环的每次迭代中泄漏内存。
关于c - 在 C 中的循环中分配和释放内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33767421/