相关疑难解决方法(0)

C:正确释放多维数组的内存

假设您有以下用于初始化多维数组的ANSI C代码:

int main()
{
      int i, m = 5, n = 20;
      int **a = malloc(m * sizeof(int *));

      //Initialize the arrays
      for (i = 0; i < m; i++) { 
          a[i]=malloc(n * sizeof(int));
      }

      //...do something with arrays

      //How do I free the **a ?

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

使用后**a,如何正确地从内存中释放它?


[更新](解决方案)

感谢Tim(以及其他人)的回答,我现在可以做这样的功能来从我的多维数组中释放内存:

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

c malloc free memory-leaks memory-management

38
推荐指数
2
解决办法
4万
查看次数

标签 统计

c ×1

free ×1

malloc ×1

memory-leaks ×1

memory-management ×1