在C中释放2D数组的内存

时间:2013-12-31 21:35:47

标签: c arrays memory free

我想知道这两个函数之间有什么区别,如果有的话。

void dealloc (int**arr, int n)
{
    int i;
    for (i=0; i<n;i++)
        free((*arr)[i]);
    free(*arr);
    *arr=NULL;
}

并且

void deallocpurple (int**arr, int n)
{
    int i;
    for (i=0; i<n;i++)
        free(arr[i]);
    free(arr);
    *arr = NULL;
}

感谢。

1 个答案:

答案 0 :(得分:1)

第一个应该是:

void dealloc (int**arr, int n)
{
    int i;
    for (i=0; i<n;i++)
        free(*(arr+i));
    free(arr);
    arr=NULL;   // This needs to be fixed in both functions but is not passed back and so, is redundant.
}

现在,这两个函数是等价的。