c - 在 C 中的循环中分配和释放内存

标签 c memory-management memory-leaks

我知道 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/

相关文章:

python-3.x - 如何检查Python程序运行时使用了多少内存

c++ - 防止多态容器中的内存碎片

c - 最佳缓冲区大小

jquery - IE 7/8/9 和 FF 4 中 jQuery 的内存泄漏

Haskell HDBC 内存泄漏

c - 为什么我的 C 代码给出下一个回文的错误输出

c++ - C语言的溢出工具是什么?

C - 使用 getchar() 读取意外字符

c - 我的c代码有什么问题? (可能是 malloc 调用)

c - 如何以及何时释放指针中的资源