小编use*_*224的帖子

我怎么能控制free()函数工作正常?

我有一个关于C的free()函数的小问题.

我在程序中使用以下代码分配多维数组:

char **newMatrix( int N ){
    int i,j;
    char **a = malloc(sizeof *a * N);
    if (a)
    {
      for (i = 0; i < N; i++)
      {
        a[i] = malloc(sizeof *a[i] * N);
      }
    }
Run Code Online (Sandbox Code Playgroud)

在程序结束时,数组中充满了字符.所以我这样做是为了释放内存.

void freeArray(char **a, int m){
    int i;
    for (i = 0; i < m; ++i) {
        free(a[i]);
    }
    free(a);
}
Run Code Online (Sandbox Code Playgroud)

我的问题是,我怎样才能真正检查free()函数是否运行良好,并释放所有内存?我问你因为我试图在freeArray之后打印矩阵,结果是值仍然存储在a [i] [j]列和行中.

对不起,如果这是一个愚蠢的问题,我是C编程的新手!

c malloc free multidimensional-array

1
推荐指数
1
解决办法
100
查看次数

标签 统计

c ×1

free ×1

malloc ×1

multidimensional-array ×1