从C中的函数中释放二维指针数组

coo*_*per 2 c memory free pointers

在C中,我有以下创建2D数组的功能.

int** createMatrix(int xdim, int ydim){
        int** mat = malloc(xdim*sizeof(int*));

        int i;
        for(i=0; i<xdim; i++){
                mat[i] = malloc(ydim*sizeof(int));
        }

        return mat;
}
Run Code Online (Sandbox Code Playgroud)

在调用函数中(在这种情况下为int main()):

int **matA = createMatrix(10, 10);
free(matA);
Run Code Online (Sandbox Code Playgroud)

我似乎有一个释放内存的问题,我想知道这是否因为变量"mat"永远不会被释放.

是否足以免费(matA),就像我一样?或者是我无法解决的问题(垫子)?

sed*_*idw 5

您需要先单独释放每一行(基本上是您创建的相反过程)

for(i=0; i < xdim; i++)
     free(matA[i]);

free(matA)
Run Code Online (Sandbox Code Playgroud)

我建议创建一个freeMat函数来执行此操作