C语言如何给二级指针动态内存分配、初始化和释放

一、需求

     需要动态创建二维数组,但数组大小是一个变量。

二、解决方案

#include<stdio.h>
#include<malloc.h>

int main()
{
    int m = 10;
    int n = 0;

    //分配内存
    int** arr = (int**)malloc(sizeof(int)*m);
    for(int i=0; i<m; i++)
    {
        arr[i] = (int*)malloc(sizeof(int)*m);
    }
    //初始化内存
    memset(*arr, 0, sizeof(int)*m*n);
    
    //内存使用
    //todo arr[i][j]

    //释放内存
    for(int i=0; i<m; i++)
    {
        free(arr[i]);
    }
}