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;
}

После использования**aкак мне правильно освободить его из памяти?

[Обновить] (Решение)

Благодаря Тиму (и другим)ответТеперь я могу сделать такую функцию, чтобы освободить память из моего многомерного массива:

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

Ответы на вопрос(5)

Ваш ответ на вопрос